{
  "version": "0.1.0",
  "scanTitle": "SCAN: Spain",
  "issueNumber": 1,
  "generatedAt": "2026-03-30T00:54:54.410Z",
  "requestedUrls": [
    "https://administracion.gob.es/",
    "https://administracion.gob.es/pag_Home",
    "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/asistencia-sanitaria/centros-atencion-sociosanitaria",
    "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/asistencia-sanitaria/estancia-TSE",
    "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/asistencia-sanitaria/numeros-urgencia",
    "https://administracion.gob.es/pag_Home/ca/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/asistencia-sanitaria/centros-atencion-sociosanitaria",
    "https://administracion.gob.es/pag_Home/ca/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/asistencia-sanitaria/estancia-TSE",
    "https://administracion.gob.es/pag_Home/ca/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/asistencia-sanitaria/numeros-urgencia",
    "https://administracion.gob.es/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/asistencia-sanitaria/centros-atencion-sociosanitaria",
    "https://administracion.gob.es/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/asistencia-sanitaria/estancia-TSE",
    "https://administracion.gob.es/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/asistencia-sanitaria/numeros-urgencia",
    "https://administracion.gob.es/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/consumidores/conexion-servicios/telecomunicaciones",
    "https://administracion.gob.es/pag_Home/gl/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/vehiculos/permiso-conduccion/validez-canje-reconocimiento",
    "https://administracion.gob.es/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/empresas/empleados/seguridad-social/alta-empresario",
    "https://administracion.gob.es/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/vehiculos/seguro-obligatorio/accidente-que-hacer",
    "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/consumidores/conexion-servicios/telecomunicaciones",
    "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/viajes/pasajeros/combinados-vinculados",
    "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/vehiculos/compraventa",
    "https://administracion.gob.es/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/asistencia-sanitaria/estancia-TSE",
    "https://administracion.gob.es/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/viajes/transporte-animales",
    "https://administracion.gob.es/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/residencia/estancia",
    "https://administracion.gob.es/pag_Home/ca/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/trabajo-jubilacion/fiscalidad/doble-imposicion",
    "https://administracion.gob.es/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/empresas/inicio-gestion-cierre/derechos/denominaciones-origen",
    "https://administracion.gob.es/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/consumidores/conexion-servicios/gas",
    "https://administracion.gob.es/pag_Home/ca/Tu-espacio-europeo/derechos-obligaciones/empresas/impuestos/especiales/electricidad",
    "https://administracion.gob.es/pag_Home/gl/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/residencia/obtencion-residencia/inscribirte-residente",
    "https://administracion.gob.es/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/viajes/documentos/pasaportes-perdidos",
    "https://administracion.gob.es/pag_Home/ca/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/trabajo-jubilacion/seguridad-social-pensiones/Pensiones-clases-pasivas/coordinacion",
    "https://administracion.gob.es/pag_Home/gl/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/viajes/pasajeros/tren-autobus",
    "https://administracion.gob.es/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/empresas/inicio-gestion-cierre/fusion-venta/sector-farmaceutico",
    "https://administracion.gob.es/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/empresas/inicio-gestion-cierre/registro-cambio-cierre/sector-farmaceutico",
    "https://administracion.gob.es/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/empresas/contratacion-publica/participar-licitaciones/asistencia-informacion",
    "https://administracion.gob.es/pag_Home/gl/Tu-espacio-europeo/derechos-obligaciones/empresas/productos/defectuosos-seguridad",
    "https://administracion.gob.es/pag_Home/gl/index.html",
    "https://administracion.gob.es/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/trabajo-jubilacion/incorporacion",
    "https://administracion.gob.es/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/consumidores/compraventa/resolucion-conflictos",
    "https://administracion.gob.es/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/empresas/inicio-gestion-cierre/derechos/patentes-marcas/servicios-oepm",
    "https://administracion.gob.es/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/trabajo-jubilacion/reconocimiento-cualificaciones/asistencia",
    "https://administracion.gob.es/pag_Home/gl/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/familia/pareja/matrimonio",
    "https://administracion.gob.es/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/consumidores/conexion-servicios/residuos",
    "https://administracion.gob.es/pag_Home/gl/Tu-espacio-europeo/derechos-obligaciones/empresas/productos/gestion-residuos",
    "https://administracion.gob.es/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/residencia/elecciones/europeas",
    "https://administracion.gob.es/pag_Home/Tramites/hechos-vitales.html",
    "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/trabajo-jubilacion/fiscalidad/pensionistas-transfronterizos",
    "https://administracion.gob.es/pag_Home/atencionCiudadana/encuentraTuOficina.html",
    "https://administracion.gob.es/pag_Home/ca/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/viajes/documentos/pasaportes-perdidos",
    "https://administracion.gob.es/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/trabajo-jubilacion/reconocimiento-cualificaciones",
    "https://administracion.gob.es/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/empresas/productos/normas-requisitos/productos-industriales",
    "https://administracion.gob.es/pag_Home/gl/Tu-espacio-europeo/derechos-obligaciones/empresas/financiacion/nacional/info-general",
    "https://administracion.gob.es/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/trabajo-jubilacion/condiciones-trabajo/prestaciones-desempleo",
    "https://administracion.gob.es/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/residencia/obtencion-residencia/info-general",
    "https://administracion.gob.es/pag_Home/gl/Tu-espacio-europeo/derechos-obligaciones/empresas/inicio-gestion-cierre/derechos/patentes-marcas/diseno-industrial",
    "https://administracion.gob.es/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/empresas/impuestos/especiales/info-general",
    "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/empresas/empleados/desplazados/laboral",
    "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/trabajo-jubilacion/seguridad-social-pensiones/Pensiones-clases-pasivas/jubilacion-retiro",
    "https://administracion.gob.es/pag_Home/gl/Tu-espacio-europeo/derechos-obligaciones/empresas/servicios/actividades-transfronterizas/sector-farmaceutico",
    "https://administracion.gob.es/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/trabajo-jubilacion/buscar-empleo",
    "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/empresas/impuestos/especiales/carbon",
    "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/residencia/fallecimiento-repatriacion",
    "https://administracion.gob.es/pag_Home/gl/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/trabajo-jubilacion/fiscalidad/trabajadores-transfronterizos",
    "https://administracion.gob.es/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/residencia/obtencion-residencia/info-general",
    "https://administracion.gob.es/pag_Home/ca/Tu-espacio-europeo/derechos-obligaciones/empresas/inicio-gestion-cierre/derechos/patentes-marcas/observancia",
    "https://administracion.gob.es/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/empresas/contratacion-publica/comunicar-irregularidad",
    "https://administracion.gob.es/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/trabajo-jubilacion/condiciones-trabajo/finalizacion-contrato",
    "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/empresas/servicios/permisos",
    "https://administracion.gob.es/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/viajes/documentos/pasaportes-caducados",
    "https://administracion.gob.es/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/residencia/obtencion-nacionalidad",
    "https://administracion.gob.es/pag_Home/gl/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/consumidores/compraventa/inmobiliario",
    "https://administracion.gob.es/pag_Home/ca/Tu-espacio-europeo/derechos-obligaciones/empresas/inicio-gestion-cierre/derechos/patentes-marcas/servicios-oepm",
    "https://administracion.gob.es/pag_Home/va/index.html",
    "https://administracion.gob.es/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/trabajo-jubilacion/condiciones-trabajo/jornada-permisos",
    "https://administracion.gob.es/pag_Home/ca/Tu-espacio-europeo/derechos-obligaciones/empresas/inicio-gestion-cierre/derechos/dominios-es",
    "https://administracion.gob.es/pag_Home/ca/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/trabajo-jubilacion/igualdad",
    "https://administracion.gob.es/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/familia/menores/gestacion-sustitucion",
    "https://administracion.gob.es/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/empresas/impuestos/especiales/electricidad",
    "https://administracion.gob.es/pag_Home/avisoLegal.html",
    "https://administracion.gob.es/pag_Home/ca/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/residencia/obtencion-residencia/registrar-familiares",
    "https://administracion.gob.es/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/trabajo-jubilacion/condiciones-trabajo/contratos-salario",
    "https://administracion.gob.es/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/empresas/inicio-gestion-cierre/insolvencia-liquidacion/masa-activa-pasiva-fin",
    "https://administracion.gob.es/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/empresas/contratacion-publica/participar-licitaciones/asistencia-informacion",
    "https://administracion.gob.es/pag_Home/Tramites.html",
    "https://administracion.gob.es/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/viajes/transporte-animales",
    "https://administracion.gob.es/pag_Home/gl/Tu-espacio-europeo/derechos-obligaciones/empresas/servicios/actividades-transfronterizas/registros-notariado",
    "https://administracion.gob.es/pag_Home/gl/Tu-espacio-europeo/derechos-obligaciones/empresas/empleados/seguridad-social/alta-empresario",
    "https://administracion.gob.es/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/empresas/contratacion-publica/presentar-oferta",
    "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/consumidores/conexion-servicios/residuos",
    "https://administracion.gob.es/pag_Home/gl/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/consumidores/conexion-servicios/residuos",
    "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/familia/genero",
    "https://administracion.gob.es/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/empresas/financiacion/nacional/registros-notariado",
    "https://administracion.gob.es/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/empresas/inicio-gestion-cierre/seguro-credito",
    "https://administracion.gob.es/pag_Home/Tramites/Relacionarte-electronicamente.html",
    "https://administracion.gob.es/pag_Home/gl/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/vehiculos/compraventa/matriculacion",
    "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/residencia/elecciones/europeas",
    "https://administracion.gob.es/pag_Home/ayudas/gestionSuscripciones.html",
    "https://administracion.gob.es/pag_Home/gl/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/trabajo-jubilacion/reconocimiento-cualificaciones/asistencia",
    "https://administracion.gob.es/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/empresas/productos/normas-especificaciones/sector-farmaceutico0",
    "https://administracion.gob.es/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/empresas/servicios/permisos",
    "https://administracion.gob.es/pag_Home/gl/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/educacion/practicas/contrato",
    "https://administracion.gob.es/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/empresas/contratacion-publica/participar-licitaciones/procedimientos-adjudicacion",
    "https://administracion.gob.es/pag_Home/ca/Tu-espacio-europeo/derechos-obligaciones/empresas/inicio-gestion-cierre/seguro-credito"
  ],
  "summary": {
    "okCount": 100,
    "errorCount": 0,
    "averagePerformanceScore": 0.5536999999999996,
    "averageBestPracticesScore": 0.7859000000000006,
    "totalTransferBytes": 227899675,
    "totalCo2Grams": 87.30412655854501,
    "averageTransferBytes": 2278996.75,
    "averageCo2GramsPerPage": 0.87304126558545,
    "averageRedundancyScore": 67.97,
    "highUrgencyRedundancyCount": 100,
    "averageModularizationScore": 46.38,
    "highUrgencyModularizationCount": 100,
    "averageDeadCodeScore": 29.97,
    "highUrgencyDeadCodeCount": 100,
    "averageNonCriticalResourcesScore": 34.79,
    "highUrgencyNonCriticalResourcesCount": 100,
    "averageFormValidationScore": 70,
    "highUrgencyFormValidationCount": 100,
    "averageMetadataScore": 30.6,
    "highUrgencyMetadataCount": 0,
    "averageLayoutAdaptationScore": 34.21,
    "highUrgencyLayoutAdaptationCount": 0,
    "averageSecurityLightScore": 31.5,
    "highUrgencySecurityLightCount": 0,
    "averageDependencyMaintenanceScore": 2.5,
    "highUrgencyDependencyMaintenanceCount": 0,
    "averageExpectedFilesScore": 30,
    "highUrgencyExpectedFilesCount": 0,
    "averageCompressionScore": 99.08,
    "highUrgencyCompressionCount": 99,
    "averageOptimizationScore": 100,
    "highUrgencyOptimizationCount": 100,
    "averageOfflineSupportScore": 100,
    "highUrgencyOfflineSupportCount": 100,
    "averageLanguageVersionScore": 0,
    "highUrgencyLanguageVersionCount": 0,
    "distinctSiteCount": 1,
    "singleSiteScan": true,
    "greenWeb": {
      "pageHostsChecked": 100,
      "pageHostsGreen": 0,
      "pageHostsNotGreen": 100,
      "pageHostsUnknown": 0,
      "externalOriginsChecked": 5,
      "externalOriginsGreen": 3,
      "externalOriginsNotGreen": 2,
      "externalOriginsUnknown": 0
    }
  },
  "budgetGuidance": {
    "wsgReference": {
      "id": "3.1",
      "title": "Set goals based on performance and energy impact",
      "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact"
    },
    "benchmarkReference": {
      "name": "Sustainable Web Design Digital Carbon Ratings",
      "url": "https://sustainablewebdesign.org/digital-carbon-ratings/"
    },
    "current": {
      "averageTransferBytes": 2278996.75,
      "averageCo2GramsPerPage": 0.87304126558545,
      "transferRating": "E",
      "co2Rating": "F"
    },
    "recommendedBudget": {
      "targetRating": "B",
      "maxTransferBytesPerPage": 999270.4,
      "maxCo2GramsPerPage": 0.145
    },
    "reductionsNeeded": {
      "transferBytesPerPage": {
        "absolute": 1279726.35,
        "percent": 56.15305726083199,
        "needsReduction": true
      },
      "co2GramsPerPage": {
        "absolute": 0.72804126558545,
        "percent": 83.39139216944518,
        "needsReduction": true
      }
    },
    "stretchBudget": {
      "targetRating": "A",
      "maxTransferBytesPerPage": 543897.6,
      "maxCo2GramsPerPage": 0.079
    }
  },
  "thirdPartyJsSummary": {
    "wsgReference": {
      "title": "Give third parties the same priority as first parties during assessment",
      "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
    },
    "averageScore": 32.81,
    "highUrgencyPages": 1,
    "assessedPages": 100,
    "providers": [
      {
        "hostname": "www.googletagmanager.com",
        "pageCount": 100,
        "transferBytes": 27416336,
        "requestCount": 189,
        "status": "green",
        "hostedBy": "Google Cloud"
      },
      {
        "hostname": "egeovisor.redsara.es",
        "pageCount": 1,
        "transferBytes": 3315523,
        "requestCount": 41,
        "status": "not-green",
        "hostedBy": null
      },
      {
        "hostname": "visitas-web.redsara.es",
        "pageCount": 1,
        "transferBytes": 44776,
        "requestCount": 2,
        "status": "not-green",
        "hostedBy": null
      },
      {
        "hostname": "www.google.com",
        "pageCount": 1,
        "transferBytes": 1012,
        "requestCount": 1,
        "status": "green",
        "hostedBy": "Google Cloud"
      }
    ]
  },
  "externalProviderRiskSummary": {
    "recurringNonGreenProviders": [],
    "nonGreenProviders": [
      {
        "hostname": "egeovisor.redsara.es",
        "status": "not-green",
        "hostedBy": null,
        "pageCount": 1,
        "requestCount": 58,
        "transferBytes": 3772552,
        "resourceTypes": [
          "script",
          "stylesheet"
        ],
        "riskScore": 73
      },
      {
        "hostname": "visitas-web.redsara.es",
        "status": "not-green",
        "hostedBy": null,
        "pageCount": 1,
        "requestCount": 2,
        "transferBytes": 44776,
        "resourceTypes": [
          "script"
        ],
        "riskScore": 48
      }
    ],
    "recurringUnknownProviders": []
  },
  "formValidationSummary": {
    "wsgReference": {
      "title": "Validate form errors and account for tooling requirements",
      "url": "https://www.w3.org/TR/web-sustainability-guidelines/#validate-form-errors-and-account-for-tooling-requirements"
    },
    "uniqueElementSignaturesAssessed": 1,
    "totalOccurrences": 100,
    "reusedFromCacheCount": 99,
    "recurringElements": [
      {
        "signature": "form|get|/buscador/buscadorsimple.htm|input|text|q|no-autocomplete|optional|no-pattern|no-minlength",
        "role": "form",
        "controlType": "text",
        "fieldName": "q",
        "score": 70,
        "urgency": "high",
        "pageCount": 100,
        "occurrenceCount": 100
      }
    ],
    "recurringSearchElements": []
  },
  "metadataSummary": {
    "wsgReference": {
      "title": "Structure metadata for machine readability",
      "url": "https://www.w3.org/TR/web-sustainability-guidelines/#structure-metadata-for-machine-readability"
    },
    "assessedPages": 100,
    "averageScore": 30.6,
    "highUrgencyPages": 0,
    "missing": {
      "missingLang": 0,
      "missingDescription": 7,
      "missingCanonical": 49,
      "missingOpenGraphCore": 100,
      "missingTwitterCard": 100,
      "invalidStructuredData": 0
    }
  },
  "layoutSupportSummary": {
    "wsgReference": {
      "title": "Ensure layouts work for different devices and requirements",
      "url": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-layouts-work-for-different-devices-and-requirements"
    },
    "assessedPages": 100,
    "averageScore": 34.21,
    "highUrgencyPages": 0,
    "mobileOverflowPages": 0,
    "tabletOverflowPages": 0,
    "totalMobileSmallTapTargets": 4172,
    "totalTabletSmallTapTargets": 7350,
    "totalFixedWidthOffenders": 217
  },
  "securityLightSummary": {
    "wsgReference": {
      "title": "Ensure that your code is secure",
      "url": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-that-your-code-is-secure"
    },
    "assessedPages": 100,
    "averageScore": 31.5,
    "highUrgencyPages": 0,
    "pagesWithoutCsp": 100,
    "pagesWithoutHsts": 0,
    "pagesWithVulnerableLibraries": 0,
    "totalExternalScriptsWithoutIntegrity": 125
  },
  "dependencyMaintenanceSummary": {
    "wsgReference": {
      "title": "Use dependencies appropriately and ensure maintenance",
      "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
    },
    "assessedPages": 100,
    "averageScore": 2.5,
    "highUrgencyPages": 0,
    "pagesWithVulnerableDependencies": 0,
    "totalVulnerableDependencies": 0,
    "topRecurringLibraries": []
  },
  "expectedFilesSummary": {
    "wsgReference": {
      "title": "Include expected and beneficial files",
      "url": "https://www.w3.org/TR/web-sustainability-guidelines/#include-expected-and-beneficial-files"
    },
    "assessedPages": 100,
    "averageScore": 30,
    "highUrgencyPages": 0,
    "missing": {
      "robotsTxt": 0,
      "sitemapXml": 0,
      "securityTxt": 100,
      "webManifest": 100,
      "favicon": 100
    }
  },
  "compressionSummary": {
    "wsgReference": {
      "title": "Reduce data transfer with compression",
      "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
    },
    "assessedPages": 100,
    "averageScore": 99.08,
    "highUrgencyPages": 99,
    "pagesMissingTextCompression": 100,
    "totalEstimatedSavingsBytes": 242471502.8999996,
    "recurringOpportunities": [
      {
        "id": "uses-text-compression",
        "title": "Enable Brotli/gzip for text assets",
        "urgency": "high",
        "pageCount": 100,
        "totalEstimatedSavingsBytes": 130237067
      },
      {
        "id": "unminified-css",
        "title": "Minify CSS before transfer",
        "urgency": "high",
        "pageCount": 100,
        "totalEstimatedSavingsBytes": 89196583
      },
      {
        "id": "modern-image-formats",
        "title": "Use modern image compression formats",
        "urgency": "high",
        "pageCount": 100,
        "totalEstimatedSavingsBytes": 15808654.899999967
      },
      {
        "id": "unminified-javascript",
        "title": "Minify JavaScript before transfer",
        "urgency": "medium",
        "pageCount": 100,
        "totalEstimatedSavingsBytes": 6377037
      },
      {
        "id": "uses-optimized-images",
        "title": "Improve image encoding quality/size",
        "urgency": "low",
        "pageCount": 100,
        "totalEstimatedSavingsBytes": 852161
      }
    ]
  },
  "optimizationSummary": {
    "wsgReference": {
      "title": "Use the most efficient solution for your service",
      "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
    },
    "assessedPages": 100,
    "averageScore": 100,
    "highUrgencyPages": 100,
    "totalEstimatedSavingsBytes": 429270361.8999993,
    "totalEstimatedBlockingMs": 911514,
    "recurringOpportunities": [
      {
        "id": "uses-text-compression",
        "title": "Enable text compression",
        "pageCount": 100,
        "totalEstimatedSavingsBytes": 130237067,
        "totalEstimatedBlockingMs": 0
      },
      {
        "id": "unused-css-rules",
        "title": "Remove unused CSS",
        "pageCount": 100,
        "totalEstimatedSavingsBytes": 119670664,
        "totalEstimatedBlockingMs": 0
      },
      {
        "id": "unminified-css",
        "title": "Minify CSS",
        "pageCount": 100,
        "totalEstimatedSavingsBytes": 89196583,
        "totalEstimatedBlockingMs": 0
      },
      {
        "id": "unused-javascript",
        "title": "Remove unused JavaScript",
        "pageCount": 100,
        "totalEstimatedSavingsBytes": 53629491,
        "totalEstimatedBlockingMs": 0
      },
      {
        "id": "modern-image-formats",
        "title": "Serve images in next-gen formats",
        "pageCount": 100,
        "totalEstimatedSavingsBytes": 15808654.899999967,
        "totalEstimatedBlockingMs": 0
      },
      {
        "id": "offscreen-images",
        "title": "Lazy-load offscreen images",
        "pageCount": 100,
        "totalEstimatedSavingsBytes": 10585524,
        "totalEstimatedBlockingMs": 0
      },
      {
        "id": "unminified-javascript",
        "title": "Minify JavaScript",
        "pageCount": 100,
        "totalEstimatedSavingsBytes": 6377037,
        "totalEstimatedBlockingMs": 0
      },
      {
        "id": "uses-optimized-images",
        "title": "Compress oversized image assets",
        "pageCount": 100,
        "totalEstimatedSavingsBytes": 852161,
        "totalEstimatedBlockingMs": 0
      },
      {
        "id": "render-blocking-resources",
        "title": "Eliminate render-blocking resources",
        "pageCount": 100,
        "totalEstimatedSavingsBytes": 0,
        "totalEstimatedBlockingMs": 911514
      },
      {
        "id": "uses-responsive-images",
        "title": "Right-size images for viewport",
        "pageCount": 94,
        "totalEstimatedSavingsBytes": 2913180,
        "totalEstimatedBlockingMs": 0
      }
    ]
  },
  "offlineSupportSummary": {
    "wsgReference": {
      "title": "Optimize caching and support offline access",
      "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
    },
    "assessedPages": 100,
    "averageScore": 100,
    "highUrgencyPages": 100,
    "pagesWithoutServiceWorker": 100,
    "pagesWithoutOfflineSupport": 100,
    "pagesWithWeakCacheTtl": 100,
    "recurringOpportunities": [
      {
        "id": "service-worker",
        "title": "Add service worker support",
        "urgency": "high",
        "pageCount": 100
      },
      {
        "id": "works-offline",
        "title": "Ensure critical routes work offline",
        "urgency": "high",
        "pageCount": 100
      },
      {
        "id": "installable-manifest",
        "title": "Improve web app manifest support",
        "urgency": "medium",
        "pageCount": 100
      },
      {
        "id": "uses-long-cache-ttl",
        "title": "Strengthen static asset cache TTL",
        "urgency": "medium",
        "pageCount": 100
      },
      {
        "id": "offline-start-url",
        "title": "Support offline start URL behavior",
        "urgency": "medium",
        "pageCount": 100
      }
    ]
  },
  "languageVersionSummary": {
    "wsgReference": {
      "title": "Use the latest stable language version",
      "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
    },
    "assessedPages": 100,
    "averageScore": 0,
    "highUrgencyPages": 0,
    "pagesWithOutdatedRuntimeSignals": 0,
    "pagesWithVersionDisclosure": 0,
    "topOutdatedSignals": []
  },
  "siteGuidance": {
    "siteCount": 1,
    "singleSiteScan": true,
    "sites": [
      {
        "origin": "https://administracion.gob.es",
        "pageCount": 100,
        "sharedRecommendations": [
          {
            "area": "expected-files",
            "urgency": "low",
            "title": "Publish .well-known/security.txt",
            "detail": ".well-known/security.txt is missing for all sampled pages on https://administracion.gob.es."
          },
          {
            "area": "security-headers",
            "urgency": "high",
            "title": "Apply Content-Security-Policy site-wide",
            "detail": "CSP is absent across all sampled pages on https://administracion.gob.es."
          },
          {
            "area": "offline-support",
            "urgency": "high",
            "title": "Introduce service worker support",
            "detail": "No sampled pages on https://administracion.gob.es indicate service worker support for offline resilience."
          },
          {
            "area": "offline-support",
            "urgency": "high",
            "title": "Support offline fallback behavior",
            "detail": "Offline page behavior was not detected across sampled pages on https://administracion.gob.es."
          },
          {
            "area": "optimization",
            "urgency": "medium",
            "title": "Fix recurring optimization bloat at shared layer",
            "detail": "Enable text compression recurs across 100 pages on https://administracion.gob.es (est. 124.20 MB aggregate savings)."
          },
          {
            "area": "compression",
            "urgency": "high",
            "title": "Prioritize recurring compression fixes",
            "detail": "Enable Brotli/gzip for text assets recurs across 100 pages on https://administracion.gob.es (est. 124.20 MB aggregate savings)."
          },
          {
            "area": "offline-support",
            "urgency": "high",
            "title": "Prioritize recurring offline/caching improvements",
            "detail": "Add service worker support is needed across 100 pages on https://administracion.gob.es."
          }
        ],
        "recurringCompression": [
          {
            "id": "uses-text-compression",
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "pageCount": 100,
            "totalEstimatedSavingsBytes": 130237067
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "pageCount": 100,
            "totalEstimatedSavingsBytes": 89196583
          },
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "high",
            "pageCount": 100,
            "totalEstimatedSavingsBytes": 15808654.899999967
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "pageCount": 100,
            "totalEstimatedSavingsBytes": 6377037
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "pageCount": 100,
            "totalEstimatedSavingsBytes": 852161
          }
        ],
        "recurringOptimization": [
          {
            "id": "uses-text-compression",
            "title": "Enable text compression",
            "pageCount": 100,
            "totalEstimatedSavingsBytes": 130237067,
            "totalEstimatedBlockingMs": 0
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "pageCount": 100,
            "totalEstimatedSavingsBytes": 119670664,
            "totalEstimatedBlockingMs": 0
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "pageCount": 100,
            "totalEstimatedSavingsBytes": 89196583,
            "totalEstimatedBlockingMs": 0
          },
          {
            "id": "unused-javascript",
            "title": "Remove unused JavaScript",
            "pageCount": 100,
            "totalEstimatedSavingsBytes": 53629491,
            "totalEstimatedBlockingMs": 0
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "pageCount": 100,
            "totalEstimatedSavingsBytes": 15808654.899999967,
            "totalEstimatedBlockingMs": 0
          },
          {
            "id": "offscreen-images",
            "title": "Lazy-load offscreen images",
            "pageCount": 100,
            "totalEstimatedSavingsBytes": 10585524,
            "totalEstimatedBlockingMs": 0
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "pageCount": 100,
            "totalEstimatedSavingsBytes": 6377037,
            "totalEstimatedBlockingMs": 0
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "pageCount": 100,
            "totalEstimatedSavingsBytes": 852161,
            "totalEstimatedBlockingMs": 0
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "pageCount": 100,
            "totalEstimatedSavingsBytes": 0,
            "totalEstimatedBlockingMs": 911514
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "pageCount": 94,
            "totalEstimatedSavingsBytes": 2913180,
            "totalEstimatedBlockingMs": 0
          }
        ],
        "recurringOfflineOpportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "pageCount": 100
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "pageCount": 100
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "pageCount": 100
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "pageCount": 100
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "pageCount": 100
          }
        ],
        "recurringDependencies": [],
        "recurringRuntimeSignals": [],
        "pageSpecific": [
          {
            "url": "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/asistencia-sanitaria/centros-atencion-sociosanitaria",
            "securityScore": 33,
            "dependencyScore": 4,
            "expectedFilesScore": 30,
            "compressionScore": 100,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Enable Brotli/gzip for text assets",
                "urgency": "high",
                "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.06 MB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "high",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
              },
              {
                "title": "Use modern image compression formats",
                "urgency": "medium",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "medium",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
              }
            ]
          },
          {
            "url": "https://administracion.gob.es/pag_Home/ca/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/asistencia-sanitaria/centros-atencion-sociosanitaria",
            "securityScore": 33,
            "dependencyScore": 4,
            "expectedFilesScore": 30,
            "compressionScore": 100,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Enable Brotli/gzip for text assets",
                "urgency": "high",
                "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.06 MB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "high",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
              },
              {
                "title": "Use modern image compression formats",
                "urgency": "medium",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "medium",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
              }
            ]
          },
          {
            "url": "https://administracion.gob.es/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/asistencia-sanitaria/centros-atencion-sociosanitaria",
            "securityScore": 33,
            "dependencyScore": 4,
            "expectedFilesScore": 30,
            "compressionScore": 100,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Enable Brotli/gzip for text assets",
                "urgency": "high",
                "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.06 MB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "high",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
              },
              {
                "title": "Use modern image compression formats",
                "urgency": "medium",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "medium",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
              }
            ]
          },
          {
            "url": "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/consumidores/conexion-servicios/telecomunicaciones",
            "securityScore": 33,
            "dependencyScore": 4,
            "expectedFilesScore": 30,
            "compressionScore": 100,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Enable Brotli/gzip for text assets",
                "urgency": "high",
                "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "high",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
              },
              {
                "title": "Use modern image compression formats",
                "urgency": "medium",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "medium",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
              }
            ]
          },
          {
            "url": "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/viajes/pasajeros/combinados-vinculados",
            "securityScore": 33,
            "dependencyScore": 4,
            "expectedFilesScore": 30,
            "compressionScore": 100,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Enable Brotli/gzip for text assets",
                "urgency": "high",
                "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "high",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
              },
              {
                "title": "Use modern image compression formats",
                "urgency": "medium",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "medium",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
              }
            ]
          },
          {
            "url": "https://administracion.gob.es/pag_Home/ca/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/trabajo-jubilacion/fiscalidad/doble-imposicion",
            "securityScore": 33,
            "dependencyScore": 4,
            "expectedFilesScore": 30,
            "compressionScore": 100,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Enable Brotli/gzip for text assets",
                "urgency": "high",
                "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "high",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
              },
              {
                "title": "Use modern image compression formats",
                "urgency": "medium",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "medium",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
              }
            ]
          },
          {
            "url": "https://administracion.gob.es/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/empresas/inicio-gestion-cierre/derechos/denominaciones-origen",
            "securityScore": 33,
            "dependencyScore": 4,
            "expectedFilesScore": 30,
            "compressionScore": 100,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Enable Brotli/gzip for text assets",
                "urgency": "high",
                "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "high",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
              },
              {
                "title": "Use modern image compression formats",
                "urgency": "medium",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 158.13 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "medium",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
              }
            ]
          },
          {
            "url": "https://administracion.gob.es/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/consumidores/conexion-servicios/gas",
            "securityScore": 33,
            "dependencyScore": 4,
            "expectedFilesScore": 30,
            "compressionScore": 100,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Enable Brotli/gzip for text assets",
                "urgency": "high",
                "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "high",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
              },
              {
                "title": "Use modern image compression formats",
                "urgency": "medium",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "medium",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
              }
            ]
          },
          {
            "url": "https://administracion.gob.es/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/empresas/inicio-gestion-cierre/registro-cambio-cierre/sector-farmaceutico",
            "securityScore": 33,
            "dependencyScore": 4,
            "expectedFilesScore": 30,
            "compressionScore": 100,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Enable Brotli/gzip for text assets",
                "urgency": "high",
                "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "high",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
              },
              {
                "title": "Use modern image compression formats",
                "urgency": "medium",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "medium",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
              }
            ]
          },
          {
            "url": "https://administracion.gob.es/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/trabajo-jubilacion/incorporacion",
            "securityScore": 33,
            "dependencyScore": 4,
            "expectedFilesScore": 30,
            "compressionScore": 100,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Enable Brotli/gzip for text assets",
                "urgency": "high",
                "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "high",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
              },
              {
                "title": "Use modern image compression formats",
                "urgency": "medium",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "medium",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
              }
            ]
          },
          {
            "url": "https://administracion.gob.es/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/empresas/inicio-gestion-cierre/derechos/patentes-marcas/servicios-oepm",
            "securityScore": 33,
            "dependencyScore": 4,
            "expectedFilesScore": 30,
            "compressionScore": 100,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Enable Brotli/gzip for text assets",
                "urgency": "high",
                "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "high",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
              },
              {
                "title": "Use modern image compression formats",
                "urgency": "medium",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "medium",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
              }
            ]
          },
          {
            "url": "https://administracion.gob.es/pag_Home/gl/Tu-espacio-europeo/derechos-obligaciones/empresas/productos/gestion-residuos",
            "securityScore": 33,
            "dependencyScore": 4,
            "expectedFilesScore": 30,
            "compressionScore": 100,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Enable Brotli/gzip for text assets",
                "urgency": "high",
                "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "high",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
              },
              {
                "title": "Use modern image compression formats",
                "urgency": "medium",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "medium",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
              }
            ]
          },
          {
            "url": "https://administracion.gob.es/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/residencia/obtencion-residencia/info-general",
            "securityScore": 33,
            "dependencyScore": 4,
            "expectedFilesScore": 30,
            "compressionScore": 100,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Enable Brotli/gzip for text assets",
                "urgency": "high",
                "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "high",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
              },
              {
                "title": "Use modern image compression formats",
                "urgency": "medium",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "medium",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
              }
            ]
          },
          {
            "url": "https://administracion.gob.es/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/empresas/impuestos/especiales/info-general",
            "securityScore": 33,
            "dependencyScore": 4,
            "expectedFilesScore": 30,
            "compressionScore": 100,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Enable Brotli/gzip for text assets",
                "urgency": "high",
                "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "high",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
              },
              {
                "title": "Use modern image compression formats",
                "urgency": "medium",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "medium",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
              }
            ]
          },
          {
            "url": "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/empresas/empleados/desplazados/laboral",
            "securityScore": 33,
            "dependencyScore": 4,
            "expectedFilesScore": 30,
            "compressionScore": 100,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Enable Brotli/gzip for text assets",
                "urgency": "high",
                "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "high",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
              },
              {
                "title": "Use modern image compression formats",
                "urgency": "medium",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "medium",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
              }
            ]
          },
          {
            "url": "https://administracion.gob.es/pag_Home/gl/Tu-espacio-europeo/derechos-obligaciones/empresas/servicios/actividades-transfronterizas/sector-farmaceutico",
            "securityScore": 33,
            "dependencyScore": 4,
            "expectedFilesScore": 30,
            "compressionScore": 100,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Enable Brotli/gzip for text assets",
                "urgency": "high",
                "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "high",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
              },
              {
                "title": "Use modern image compression formats",
                "urgency": "medium",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "medium",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
              }
            ]
          },
          {
            "url": "https://administracion.gob.es/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/trabajo-jubilacion/buscar-empleo",
            "securityScore": 33,
            "dependencyScore": 4,
            "expectedFilesScore": 30,
            "compressionScore": 100,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Enable Brotli/gzip for text assets",
                "urgency": "high",
                "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "high",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
              },
              {
                "title": "Use modern image compression formats",
                "urgency": "medium",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "medium",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
              }
            ]
          },
          {
            "url": "https://administracion.gob.es/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/residencia/obtencion-residencia/info-general",
            "securityScore": 33,
            "dependencyScore": 4,
            "expectedFilesScore": 30,
            "compressionScore": 100,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Enable Brotli/gzip for text assets",
                "urgency": "high",
                "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "high",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
              },
              {
                "title": "Use modern image compression formats",
                "urgency": "medium",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "medium",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
              }
            ]
          },
          {
            "url": "https://administracion.gob.es/pag_Home/ca/Tu-espacio-europeo/derechos-obligaciones/empresas/inicio-gestion-cierre/derechos/patentes-marcas/servicios-oepm",
            "securityScore": 33,
            "dependencyScore": 4,
            "expectedFilesScore": 30,
            "compressionScore": 100,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Enable Brotli/gzip for text assets",
                "urgency": "high",
                "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "high",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
              },
              {
                "title": "Use modern image compression formats",
                "urgency": "medium",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "medium",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
              }
            ]
          },
          {
            "url": "https://administracion.gob.es/pag_Home/ca/Tu-espacio-europeo/derechos-obligaciones/empresas/inicio-gestion-cierre/derechos/dominios-es",
            "securityScore": 33,
            "dependencyScore": 4,
            "expectedFilesScore": 30,
            "compressionScore": 100,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Enable Brotli/gzip for text assets",
                "urgency": "high",
                "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "high",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
              },
              {
                "title": "Use modern image compression formats",
                "urgency": "medium",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "medium",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
              }
            ]
          },
          {
            "url": "https://administracion.gob.es/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/trabajo-jubilacion/condiciones-trabajo/contratos-salario",
            "securityScore": 33,
            "dependencyScore": 4,
            "expectedFilesScore": 30,
            "compressionScore": 100,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Enable Brotli/gzip for text assets",
                "urgency": "high",
                "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "high",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
              },
              {
                "title": "Use modern image compression formats",
                "urgency": "medium",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "medium",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
              }
            ]
          },
          {
            "url": "https://administracion.gob.es/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/empresas/contratacion-publica/presentar-oferta",
            "securityScore": 33,
            "dependencyScore": 4,
            "expectedFilesScore": 30,
            "compressionScore": 100,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Enable Brotli/gzip for text assets",
                "urgency": "high",
                "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "high",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
              },
              {
                "title": "Use modern image compression formats",
                "urgency": "medium",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "medium",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
              }
            ]
          },
          {
            "url": "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/consumidores/conexion-servicios/residuos",
            "securityScore": 33,
            "dependencyScore": 4,
            "expectedFilesScore": 30,
            "compressionScore": 100,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Enable Brotli/gzip for text assets",
                "urgency": "high",
                "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "high",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
              },
              {
                "title": "Use modern image compression formats",
                "urgency": "medium",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "medium",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
              }
            ]
          },
          {
            "url": "https://administracion.gob.es/pag_Home/gl/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/consumidores/conexion-servicios/residuos",
            "securityScore": 33,
            "dependencyScore": 4,
            "expectedFilesScore": 30,
            "compressionScore": 100,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Enable Brotli/gzip for text assets",
                "urgency": "high",
                "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "high",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
              },
              {
                "title": "Use modern image compression formats",
                "urgency": "medium",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "medium",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
              }
            ]
          },
          {
            "url": "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/asistencia-sanitaria/estancia-TSE",
            "securityScore": 31,
            "dependencyScore": 2,
            "expectedFilesScore": 30,
            "compressionScore": 100,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Enable Brotli/gzip for text assets",
                "urgency": "high",
                "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.06 MB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "high",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
              },
              {
                "title": "Use modern image compression formats",
                "urgency": "medium",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "medium",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
              }
            ]
          },
          {
            "url": "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/asistencia-sanitaria/numeros-urgencia",
            "securityScore": 31,
            "dependencyScore": 2,
            "expectedFilesScore": 30,
            "compressionScore": 100,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Enable Brotli/gzip for text assets",
                "urgency": "high",
                "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.06 MB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "high",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
              },
              {
                "title": "Use modern image compression formats",
                "urgency": "medium",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "medium",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
              }
            ]
          },
          {
            "url": "https://administracion.gob.es/pag_Home/ca/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/asistencia-sanitaria/estancia-TSE",
            "securityScore": 31,
            "dependencyScore": 2,
            "expectedFilesScore": 30,
            "compressionScore": 100,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Enable Brotli/gzip for text assets",
                "urgency": "high",
                "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.06 MB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "high",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
              },
              {
                "title": "Use modern image compression formats",
                "urgency": "medium",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "medium",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
              }
            ]
          },
          {
            "url": "https://administracion.gob.es/pag_Home/ca/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/asistencia-sanitaria/numeros-urgencia",
            "securityScore": 31,
            "dependencyScore": 2,
            "expectedFilesScore": 30,
            "compressionScore": 100,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Enable Brotli/gzip for text assets",
                "urgency": "high",
                "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.23 MB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "high",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
              },
              {
                "title": "Use modern image compression formats",
                "urgency": "medium",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "medium",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
              }
            ]
          },
          {
            "url": "https://administracion.gob.es/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/asistencia-sanitaria/estancia-TSE",
            "securityScore": 31,
            "dependencyScore": 2,
            "expectedFilesScore": 30,
            "compressionScore": 100,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Enable Brotli/gzip for text assets",
                "urgency": "high",
                "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.06 MB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "high",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
              },
              {
                "title": "Use modern image compression formats",
                "urgency": "medium",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "medium",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
              }
            ]
          },
          {
            "url": "https://administracion.gob.es/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/asistencia-sanitaria/numeros-urgencia",
            "securityScore": 31,
            "dependencyScore": 2,
            "expectedFilesScore": 30,
            "compressionScore": 100,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Enable Brotli/gzip for text assets",
                "urgency": "high",
                "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.23 MB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "high",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
              },
              {
                "title": "Use modern image compression formats",
                "urgency": "medium",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "medium",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
              }
            ]
          },
          {
            "url": "https://administracion.gob.es/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/consumidores/conexion-servicios/telecomunicaciones",
            "securityScore": 31,
            "dependencyScore": 2,
            "expectedFilesScore": 30,
            "compressionScore": 100,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Enable Brotli/gzip for text assets",
                "urgency": "high",
                "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.23 MB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "high",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
              },
              {
                "title": "Use modern image compression formats",
                "urgency": "medium",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "medium",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
              }
            ]
          },
          {
            "url": "https://administracion.gob.es/pag_Home/gl/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/vehiculos/permiso-conduccion/validez-canje-reconocimiento",
            "securityScore": 31,
            "dependencyScore": 2,
            "expectedFilesScore": 30,
            "compressionScore": 100,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Enable Brotli/gzip for text assets",
                "urgency": "high",
                "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.06 MB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "high",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
              },
              {
                "title": "Use modern image compression formats",
                "urgency": "medium",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "medium",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
              }
            ]
          },
          {
            "url": "https://administracion.gob.es/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/empresas/empleados/seguridad-social/alta-empresario",
            "securityScore": 31,
            "dependencyScore": 2,
            "expectedFilesScore": 30,
            "compressionScore": 100,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Enable Brotli/gzip for text assets",
                "urgency": "high",
                "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.23 MB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "high",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
              },
              {
                "title": "Use modern image compression formats",
                "urgency": "medium",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "medium",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
              }
            ]
          },
          {
            "url": "https://administracion.gob.es/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/vehiculos/seguro-obligatorio/accidente-que-hacer",
            "securityScore": 31,
            "dependencyScore": 2,
            "expectedFilesScore": 30,
            "compressionScore": 100,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Enable Brotli/gzip for text assets",
                "urgency": "high",
                "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "high",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
              },
              {
                "title": "Use modern image compression formats",
                "urgency": "medium",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "medium",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
              }
            ]
          },
          {
            "url": "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/vehiculos/compraventa",
            "securityScore": 31,
            "dependencyScore": 2,
            "expectedFilesScore": 30,
            "compressionScore": 100,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Enable Brotli/gzip for text assets",
                "urgency": "high",
                "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "high",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
              },
              {
                "title": "Use modern image compression formats",
                "urgency": "medium",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "medium",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
              }
            ]
          },
          {
            "url": "https://administracion.gob.es/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/asistencia-sanitaria/estancia-TSE",
            "securityScore": 31,
            "dependencyScore": 2,
            "expectedFilesScore": 30,
            "compressionScore": 100,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Enable Brotli/gzip for text assets",
                "urgency": "high",
                "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "high",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
              },
              {
                "title": "Use modern image compression formats",
                "urgency": "medium",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "medium",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
              }
            ]
          },
          {
            "url": "https://administracion.gob.es/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/viajes/transporte-animales",
            "securityScore": 31,
            "dependencyScore": 2,
            "expectedFilesScore": 30,
            "compressionScore": 100,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Enable Brotli/gzip for text assets",
                "urgency": "high",
                "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "high",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
              },
              {
                "title": "Use modern image compression formats",
                "urgency": "medium",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "medium",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
              }
            ]
          },
          {
            "url": "https://administracion.gob.es/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/residencia/estancia",
            "securityScore": 31,
            "dependencyScore": 2,
            "expectedFilesScore": 30,
            "compressionScore": 100,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Enable Brotli/gzip for text assets",
                "urgency": "high",
                "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "high",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
              },
              {
                "title": "Use modern image compression formats",
                "urgency": "medium",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "medium",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
              }
            ]
          },
          {
            "url": "https://administracion.gob.es/pag_Home/ca/Tu-espacio-europeo/derechos-obligaciones/empresas/impuestos/especiales/electricidad",
            "securityScore": 31,
            "dependencyScore": 2,
            "expectedFilesScore": 30,
            "compressionScore": 100,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Enable Brotli/gzip for text assets",
                "urgency": "high",
                "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "high",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
              },
              {
                "title": "Use modern image compression formats",
                "urgency": "medium",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "medium",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
              }
            ]
          },
          {
            "url": "https://administracion.gob.es/pag_Home/gl/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/residencia/obtencion-residencia/inscribirte-residente",
            "securityScore": 31,
            "dependencyScore": 2,
            "expectedFilesScore": 30,
            "compressionScore": 100,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Enable Brotli/gzip for text assets",
                "urgency": "high",
                "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "high",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
              },
              {
                "title": "Use modern image compression formats",
                "urgency": "medium",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "medium",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
              }
            ]
          },
          {
            "url": "https://administracion.gob.es/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/viajes/documentos/pasaportes-perdidos",
            "securityScore": 31,
            "dependencyScore": 2,
            "expectedFilesScore": 30,
            "compressionScore": 100,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Enable Brotli/gzip for text assets",
                "urgency": "high",
                "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "high",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
              },
              {
                "title": "Use modern image compression formats",
                "urgency": "medium",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "medium",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
              }
            ]
          },
          {
            "url": "https://administracion.gob.es/pag_Home/ca/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/trabajo-jubilacion/seguridad-social-pensiones/Pensiones-clases-pasivas/coordinacion",
            "securityScore": 31,
            "dependencyScore": 2,
            "expectedFilesScore": 30,
            "compressionScore": 100,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Enable Brotli/gzip for text assets",
                "urgency": "high",
                "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "high",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
              },
              {
                "title": "Use modern image compression formats",
                "urgency": "medium",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "medium",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
              }
            ]
          },
          {
            "url": "https://administracion.gob.es/pag_Home/gl/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/viajes/pasajeros/tren-autobus",
            "securityScore": 31,
            "dependencyScore": 2,
            "expectedFilesScore": 30,
            "compressionScore": 100,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Enable Brotli/gzip for text assets",
                "urgency": "high",
                "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "high",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
              },
              {
                "title": "Use modern image compression formats",
                "urgency": "medium",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "medium",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
              }
            ]
          },
          {
            "url": "https://administracion.gob.es/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/empresas/inicio-gestion-cierre/fusion-venta/sector-farmaceutico",
            "securityScore": 31,
            "dependencyScore": 2,
            "expectedFilesScore": 30,
            "compressionScore": 100,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Enable Brotli/gzip for text assets",
                "urgency": "high",
                "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "high",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
              },
              {
                "title": "Use modern image compression formats",
                "urgency": "medium",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "medium",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
              }
            ]
          },
          {
            "url": "https://administracion.gob.es/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/empresas/contratacion-publica/participar-licitaciones/asistencia-informacion",
            "securityScore": 31,
            "dependencyScore": 2,
            "expectedFilesScore": 30,
            "compressionScore": 100,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Enable Brotli/gzip for text assets",
                "urgency": "high",
                "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.04 MB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "high",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
              },
              {
                "title": "Use modern image compression formats",
                "urgency": "medium",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "medium",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
              }
            ]
          },
          {
            "url": "https://administracion.gob.es/pag_Home/gl/Tu-espacio-europeo/derechos-obligaciones/empresas/productos/defectuosos-seguridad",
            "securityScore": 31,
            "dependencyScore": 2,
            "expectedFilesScore": 30,
            "compressionScore": 100,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Enable Brotli/gzip for text assets",
                "urgency": "high",
                "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "high",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
              },
              {
                "title": "Use modern image compression formats",
                "urgency": "medium",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "medium",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
              }
            ]
          },
          {
            "url": "https://administracion.gob.es/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/consumidores/compraventa/resolucion-conflictos",
            "securityScore": 31,
            "dependencyScore": 2,
            "expectedFilesScore": 30,
            "compressionScore": 100,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Enable Brotli/gzip for text assets",
                "urgency": "high",
                "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "high",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
              },
              {
                "title": "Use modern image compression formats",
                "urgency": "medium",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "medium",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
              }
            ]
          },
          {
            "url": "https://administracion.gob.es/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/trabajo-jubilacion/reconocimiento-cualificaciones/asistencia",
            "securityScore": 31,
            "dependencyScore": 2,
            "expectedFilesScore": 30,
            "compressionScore": 100,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Enable Brotli/gzip for text assets",
                "urgency": "high",
                "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "high",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
              },
              {
                "title": "Use modern image compression formats",
                "urgency": "medium",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "medium",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
              }
            ]
          },
          {
            "url": "https://administracion.gob.es/pag_Home/gl/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/familia/pareja/matrimonio",
            "securityScore": 31,
            "dependencyScore": 2,
            "expectedFilesScore": 30,
            "compressionScore": 100,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Enable Brotli/gzip for text assets",
                "urgency": "high",
                "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "high",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
              },
              {
                "title": "Use modern image compression formats",
                "urgency": "medium",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "medium",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
              }
            ]
          },
          {
            "url": "https://administracion.gob.es/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/consumidores/conexion-servicios/residuos",
            "securityScore": 31,
            "dependencyScore": 2,
            "expectedFilesScore": 30,
            "compressionScore": 100,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Enable Brotli/gzip for text assets",
                "urgency": "high",
                "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "high",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
              },
              {
                "title": "Use modern image compression formats",
                "urgency": "medium",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "medium",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
              }
            ]
          },
          {
            "url": "https://administracion.gob.es/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/residencia/elecciones/europeas",
            "securityScore": 31,
            "dependencyScore": 2,
            "expectedFilesScore": 30,
            "compressionScore": 100,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Enable Brotli/gzip for text assets",
                "urgency": "high",
                "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "high",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
              },
              {
                "title": "Use modern image compression formats",
                "urgency": "medium",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "medium",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
              }
            ]
          },
          {
            "url": "https://administracion.gob.es/pag_Home/Tramites/hechos-vitales.html",
            "securityScore": 31,
            "dependencyScore": 2,
            "expectedFilesScore": 30,
            "compressionScore": 100,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Enable Brotli/gzip for text assets",
                "urgency": "high",
                "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "high",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
              },
              {
                "title": "Use modern image compression formats",
                "urgency": "high",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 598.44 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "medium",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
              }
            ]
          },
          {
            "url": "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/trabajo-jubilacion/fiscalidad/pensionistas-transfronterizos",
            "securityScore": 31,
            "dependencyScore": 2,
            "expectedFilesScore": 30,
            "compressionScore": 100,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Enable Brotli/gzip for text assets",
                "urgency": "high",
                "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "high",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
              },
              {
                "title": "Use modern image compression formats",
                "urgency": "medium",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "medium",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
              }
            ]
          },
          {
            "url": "https://administracion.gob.es/pag_Home/ca/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/viajes/documentos/pasaportes-perdidos",
            "securityScore": 31,
            "dependencyScore": 2,
            "expectedFilesScore": 30,
            "compressionScore": 100,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Enable Brotli/gzip for text assets",
                "urgency": "high",
                "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "high",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
              },
              {
                "title": "Use modern image compression formats",
                "urgency": "medium",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "medium",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
              }
            ]
          },
          {
            "url": "https://administracion.gob.es/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/trabajo-jubilacion/reconocimiento-cualificaciones",
            "securityScore": 31,
            "dependencyScore": 2,
            "expectedFilesScore": 30,
            "compressionScore": 100,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Enable Brotli/gzip for text assets",
                "urgency": "high",
                "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "high",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
              },
              {
                "title": "Use modern image compression formats",
                "urgency": "medium",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "medium",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
              }
            ]
          },
          {
            "url": "https://administracion.gob.es/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/empresas/productos/normas-requisitos/productos-industriales",
            "securityScore": 31,
            "dependencyScore": 2,
            "expectedFilesScore": 30,
            "compressionScore": 100,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Enable Brotli/gzip for text assets",
                "urgency": "high",
                "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "high",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
              },
              {
                "title": "Use modern image compression formats",
                "urgency": "medium",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "medium",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
              }
            ]
          },
          {
            "url": "https://administracion.gob.es/pag_Home/gl/Tu-espacio-europeo/derechos-obligaciones/empresas/financiacion/nacional/info-general",
            "securityScore": 31,
            "dependencyScore": 2,
            "expectedFilesScore": 30,
            "compressionScore": 100,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Enable Brotli/gzip for text assets",
                "urgency": "high",
                "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "high",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
              },
              {
                "title": "Use modern image compression formats",
                "urgency": "medium",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "medium",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
              }
            ]
          },
          {
            "url": "https://administracion.gob.es/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/trabajo-jubilacion/condiciones-trabajo/prestaciones-desempleo",
            "securityScore": 31,
            "dependencyScore": 2,
            "expectedFilesScore": 30,
            "compressionScore": 100,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Enable Brotli/gzip for text assets",
                "urgency": "high",
                "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "high",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
              },
              {
                "title": "Use modern image compression formats",
                "urgency": "medium",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "medium",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
              }
            ]
          },
          {
            "url": "https://administracion.gob.es/pag_Home/gl/Tu-espacio-europeo/derechos-obligaciones/empresas/inicio-gestion-cierre/derechos/patentes-marcas/diseno-industrial",
            "securityScore": 31,
            "dependencyScore": 2,
            "expectedFilesScore": 30,
            "compressionScore": 100,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Enable Brotli/gzip for text assets",
                "urgency": "high",
                "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "high",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
              },
              {
                "title": "Use modern image compression formats",
                "urgency": "medium",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "medium",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
              }
            ]
          },
          {
            "url": "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/trabajo-jubilacion/seguridad-social-pensiones/Pensiones-clases-pasivas/jubilacion-retiro",
            "securityScore": 31,
            "dependencyScore": 2,
            "expectedFilesScore": 30,
            "compressionScore": 100,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Enable Brotli/gzip for text assets",
                "urgency": "high",
                "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "high",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
              },
              {
                "title": "Use modern image compression formats",
                "urgency": "medium",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "medium",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
              }
            ]
          },
          {
            "url": "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/empresas/impuestos/especiales/carbon",
            "securityScore": 31,
            "dependencyScore": 2,
            "expectedFilesScore": 30,
            "compressionScore": 100,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Enable Brotli/gzip for text assets",
                "urgency": "high",
                "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "high",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
              },
              {
                "title": "Use modern image compression formats",
                "urgency": "medium",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "medium",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
              }
            ]
          },
          {
            "url": "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/residencia/fallecimiento-repatriacion",
            "securityScore": 31,
            "dependencyScore": 2,
            "expectedFilesScore": 30,
            "compressionScore": 100,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Enable Brotli/gzip for text assets",
                "urgency": "high",
                "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "high",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
              },
              {
                "title": "Use modern image compression formats",
                "urgency": "medium",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "medium",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
              }
            ]
          },
          {
            "url": "https://administracion.gob.es/pag_Home/gl/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/trabajo-jubilacion/fiscalidad/trabajadores-transfronterizos",
            "securityScore": 31,
            "dependencyScore": 2,
            "expectedFilesScore": 30,
            "compressionScore": 100,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Enable Brotli/gzip for text assets",
                "urgency": "high",
                "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "high",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
              },
              {
                "title": "Use modern image compression formats",
                "urgency": "medium",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "medium",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
              }
            ]
          },
          {
            "url": "https://administracion.gob.es/pag_Home/ca/Tu-espacio-europeo/derechos-obligaciones/empresas/inicio-gestion-cierre/derechos/patentes-marcas/observancia",
            "securityScore": 31,
            "dependencyScore": 2,
            "expectedFilesScore": 30,
            "compressionScore": 100,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Enable Brotli/gzip for text assets",
                "urgency": "high",
                "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "high",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
              },
              {
                "title": "Use modern image compression formats",
                "urgency": "medium",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "medium",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
              }
            ]
          },
          {
            "url": "https://administracion.gob.es/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/empresas/contratacion-publica/comunicar-irregularidad",
            "securityScore": 31,
            "dependencyScore": 2,
            "expectedFilesScore": 30,
            "compressionScore": 100,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Enable Brotli/gzip for text assets",
                "urgency": "high",
                "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "high",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
              },
              {
                "title": "Use modern image compression formats",
                "urgency": "medium",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "medium",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
              }
            ]
          },
          {
            "url": "https://administracion.gob.es/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/trabajo-jubilacion/condiciones-trabajo/finalizacion-contrato",
            "securityScore": 31,
            "dependencyScore": 2,
            "expectedFilesScore": 30,
            "compressionScore": 100,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Enable Brotli/gzip for text assets",
                "urgency": "high",
                "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "high",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
              },
              {
                "title": "Use modern image compression formats",
                "urgency": "medium",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "medium",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
              }
            ]
          },
          {
            "url": "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/empresas/servicios/permisos",
            "securityScore": 31,
            "dependencyScore": 2,
            "expectedFilesScore": 30,
            "compressionScore": 100,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Enable Brotli/gzip for text assets",
                "urgency": "high",
                "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "high",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
              },
              {
                "title": "Use modern image compression formats",
                "urgency": "medium",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "medium",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
              }
            ]
          },
          {
            "url": "https://administracion.gob.es/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/viajes/documentos/pasaportes-caducados",
            "securityScore": 31,
            "dependencyScore": 2,
            "expectedFilesScore": 30,
            "compressionScore": 100,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Enable Brotli/gzip for text assets",
                "urgency": "high",
                "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "high",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
              },
              {
                "title": "Use modern image compression formats",
                "urgency": "medium",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "medium",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
              }
            ]
          },
          {
            "url": "https://administracion.gob.es/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/residencia/obtencion-nacionalidad",
            "securityScore": 31,
            "dependencyScore": 2,
            "expectedFilesScore": 30,
            "compressionScore": 100,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Enable Brotli/gzip for text assets",
                "urgency": "high",
                "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "high",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
              },
              {
                "title": "Use modern image compression formats",
                "urgency": "medium",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "medium",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
              }
            ]
          },
          {
            "url": "https://administracion.gob.es/pag_Home/gl/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/consumidores/compraventa/inmobiliario",
            "securityScore": 31,
            "dependencyScore": 2,
            "expectedFilesScore": 30,
            "compressionScore": 100,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Enable Brotli/gzip for text assets",
                "urgency": "high",
                "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "high",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
              },
              {
                "title": "Use modern image compression formats",
                "urgency": "medium",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "medium",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
              }
            ]
          },
          {
            "url": "https://administracion.gob.es/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/trabajo-jubilacion/condiciones-trabajo/jornada-permisos",
            "securityScore": 31,
            "dependencyScore": 2,
            "expectedFilesScore": 30,
            "compressionScore": 100,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Enable Brotli/gzip for text assets",
                "urgency": "high",
                "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "high",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
              },
              {
                "title": "Use modern image compression formats",
                "urgency": "medium",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "medium",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
              }
            ]
          },
          {
            "url": "https://administracion.gob.es/pag_Home/ca/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/trabajo-jubilacion/igualdad",
            "securityScore": 31,
            "dependencyScore": 2,
            "expectedFilesScore": 30,
            "compressionScore": 100,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Enable Brotli/gzip for text assets",
                "urgency": "high",
                "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "high",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
              },
              {
                "title": "Use modern image compression formats",
                "urgency": "medium",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "medium",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
              }
            ]
          },
          {
            "url": "https://administracion.gob.es/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/familia/menores/gestacion-sustitucion",
            "securityScore": 31,
            "dependencyScore": 2,
            "expectedFilesScore": 30,
            "compressionScore": 100,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Enable Brotli/gzip for text assets",
                "urgency": "high",
                "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "high",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
              },
              {
                "title": "Use modern image compression formats",
                "urgency": "medium",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "medium",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
              }
            ]
          },
          {
            "url": "https://administracion.gob.es/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/empresas/impuestos/especiales/electricidad",
            "securityScore": 31,
            "dependencyScore": 2,
            "expectedFilesScore": 30,
            "compressionScore": 100,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Enable Brotli/gzip for text assets",
                "urgency": "high",
                "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "high",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
              },
              {
                "title": "Use modern image compression formats",
                "urgency": "medium",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "medium",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
              }
            ]
          },
          {
            "url": "https://administracion.gob.es/pag_Home/avisoLegal.html",
            "securityScore": 31,
            "dependencyScore": 2,
            "expectedFilesScore": 30,
            "compressionScore": 100,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Enable Brotli/gzip for text assets",
                "urgency": "high",
                "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "high",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
              },
              {
                "title": "Use modern image compression formats",
                "urgency": "medium",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "medium",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
              }
            ]
          },
          {
            "url": "https://administracion.gob.es/pag_Home/ca/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/residencia/obtencion-residencia/registrar-familiares",
            "securityScore": 31,
            "dependencyScore": 2,
            "expectedFilesScore": 30,
            "compressionScore": 100,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Enable Brotli/gzip for text assets",
                "urgency": "high",
                "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "high",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
              },
              {
                "title": "Use modern image compression formats",
                "urgency": "medium",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "medium",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
              }
            ]
          },
          {
            "url": "https://administracion.gob.es/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/empresas/inicio-gestion-cierre/insolvencia-liquidacion/masa-activa-pasiva-fin",
            "securityScore": 31,
            "dependencyScore": 2,
            "expectedFilesScore": 30,
            "compressionScore": 100,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Enable Brotli/gzip for text assets",
                "urgency": "high",
                "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "high",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
              },
              {
                "title": "Use modern image compression formats",
                "urgency": "medium",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "medium",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
              }
            ]
          },
          {
            "url": "https://administracion.gob.es/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/empresas/contratacion-publica/participar-licitaciones/asistencia-informacion",
            "securityScore": 31,
            "dependencyScore": 2,
            "expectedFilesScore": 30,
            "compressionScore": 100,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Enable Brotli/gzip for text assets",
                "urgency": "high",
                "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "high",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
              },
              {
                "title": "Use modern image compression formats",
                "urgency": "medium",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "medium",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
              }
            ]
          },
          {
            "url": "https://administracion.gob.es/pag_Home/Tramites.html",
            "securityScore": 31,
            "dependencyScore": 2,
            "expectedFilesScore": 30,
            "compressionScore": 100,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Enable Brotli/gzip for text assets",
                "urgency": "high",
                "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "high",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
              },
              {
                "title": "Use modern image compression formats",
                "urgency": "medium",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "medium",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
              }
            ]
          },
          {
            "url": "https://administracion.gob.es/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/viajes/transporte-animales",
            "securityScore": 31,
            "dependencyScore": 2,
            "expectedFilesScore": 30,
            "compressionScore": 100,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Enable Brotli/gzip for text assets",
                "urgency": "high",
                "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "high",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
              },
              {
                "title": "Use modern image compression formats",
                "urgency": "medium",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "medium",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
              }
            ]
          },
          {
            "url": "https://administracion.gob.es/pag_Home/gl/Tu-espacio-europeo/derechos-obligaciones/empresas/servicios/actividades-transfronterizas/registros-notariado",
            "securityScore": 31,
            "dependencyScore": 2,
            "expectedFilesScore": 30,
            "compressionScore": 100,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Enable Brotli/gzip for text assets",
                "urgency": "high",
                "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "high",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
              },
              {
                "title": "Use modern image compression formats",
                "urgency": "medium",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "medium",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
              }
            ]
          },
          {
            "url": "https://administracion.gob.es/pag_Home/gl/Tu-espacio-europeo/derechos-obligaciones/empresas/empleados/seguridad-social/alta-empresario",
            "securityScore": 31,
            "dependencyScore": 2,
            "expectedFilesScore": 30,
            "compressionScore": 100,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Enable Brotli/gzip for text assets",
                "urgency": "high",
                "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "high",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
              },
              {
                "title": "Use modern image compression formats",
                "urgency": "medium",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "medium",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
              }
            ]
          },
          {
            "url": "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/familia/genero",
            "securityScore": 31,
            "dependencyScore": 2,
            "expectedFilesScore": 30,
            "compressionScore": 100,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Enable Brotli/gzip for text assets",
                "urgency": "high",
                "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "high",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
              },
              {
                "title": "Use modern image compression formats",
                "urgency": "medium",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "medium",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
              }
            ]
          },
          {
            "url": "https://administracion.gob.es/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/empresas/financiacion/nacional/registros-notariado",
            "securityScore": 31,
            "dependencyScore": 2,
            "expectedFilesScore": 30,
            "compressionScore": 100,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Enable Brotli/gzip for text assets",
                "urgency": "high",
                "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "high",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
              },
              {
                "title": "Use modern image compression formats",
                "urgency": "medium",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "medium",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
              }
            ]
          },
          {
            "url": "https://administracion.gob.es/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/empresas/inicio-gestion-cierre/seguro-credito",
            "securityScore": 31,
            "dependencyScore": 2,
            "expectedFilesScore": 30,
            "compressionScore": 100,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Enable Brotli/gzip for text assets",
                "urgency": "high",
                "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "high",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
              },
              {
                "title": "Use modern image compression formats",
                "urgency": "medium",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "medium",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
              }
            ]
          },
          {
            "url": "https://administracion.gob.es/pag_Home/Tramites/Relacionarte-electronicamente.html",
            "securityScore": 31,
            "dependencyScore": 2,
            "expectedFilesScore": 30,
            "compressionScore": 100,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Enable Brotli/gzip for text assets",
                "urgency": "high",
                "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "high",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
              },
              {
                "title": "Use modern image compression formats",
                "urgency": "medium",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "medium",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
              }
            ]
          },
          {
            "url": "https://administracion.gob.es/pag_Home/gl/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/vehiculos/compraventa/matriculacion",
            "securityScore": 31,
            "dependencyScore": 2,
            "expectedFilesScore": 30,
            "compressionScore": 100,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Enable Brotli/gzip for text assets",
                "urgency": "high",
                "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "high",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
              },
              {
                "title": "Use modern image compression formats",
                "urgency": "medium",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "medium",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
              }
            ]
          },
          {
            "url": "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/residencia/elecciones/europeas",
            "securityScore": 31,
            "dependencyScore": 2,
            "expectedFilesScore": 30,
            "compressionScore": 100,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Enable Brotli/gzip for text assets",
                "urgency": "high",
                "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "high",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
              },
              {
                "title": "Use modern image compression formats",
                "urgency": "medium",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "medium",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
              }
            ]
          },
          {
            "url": "https://administracion.gob.es/pag_Home/ayudas/gestionSuscripciones.html",
            "securityScore": 31,
            "dependencyScore": 2,
            "expectedFilesScore": 30,
            "compressionScore": 100,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Enable Brotli/gzip for text assets",
                "urgency": "high",
                "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "high",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
              },
              {
                "title": "Use modern image compression formats",
                "urgency": "medium",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 150.35 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "medium",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
              }
            ]
          },
          {
            "url": "https://administracion.gob.es/pag_Home/gl/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/trabajo-jubilacion/reconocimiento-cualificaciones/asistencia",
            "securityScore": 31,
            "dependencyScore": 2,
            "expectedFilesScore": 30,
            "compressionScore": 100,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Enable Brotli/gzip for text assets",
                "urgency": "high",
                "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "high",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
              },
              {
                "title": "Use modern image compression formats",
                "urgency": "medium",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "medium",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
              }
            ]
          },
          {
            "url": "https://administracion.gob.es/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/empresas/productos/normas-especificaciones/sector-farmaceutico0",
            "securityScore": 31,
            "dependencyScore": 2,
            "expectedFilesScore": 30,
            "compressionScore": 100,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Enable Brotli/gzip for text assets",
                "urgency": "high",
                "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "high",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
              },
              {
                "title": "Use modern image compression formats",
                "urgency": "medium",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "medium",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
              }
            ]
          },
          {
            "url": "https://administracion.gob.es/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/empresas/servicios/permisos",
            "securityScore": 31,
            "dependencyScore": 2,
            "expectedFilesScore": 30,
            "compressionScore": 100,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Enable Brotli/gzip for text assets",
                "urgency": "high",
                "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "high",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
              },
              {
                "title": "Use modern image compression formats",
                "urgency": "medium",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "medium",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
              }
            ]
          },
          {
            "url": "https://administracion.gob.es/pag_Home/gl/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/educacion/practicas/contrato",
            "securityScore": 31,
            "dependencyScore": 2,
            "expectedFilesScore": 30,
            "compressionScore": 100,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Enable Brotli/gzip for text assets",
                "urgency": "high",
                "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "high",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
              },
              {
                "title": "Use modern image compression formats",
                "urgency": "medium",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "medium",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
              }
            ]
          },
          {
            "url": "https://administracion.gob.es/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/empresas/contratacion-publica/participar-licitaciones/procedimientos-adjudicacion",
            "securityScore": 31,
            "dependencyScore": 2,
            "expectedFilesScore": 30,
            "compressionScore": 100,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Enable Brotli/gzip for text assets",
                "urgency": "high",
                "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "high",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
              },
              {
                "title": "Use modern image compression formats",
                "urgency": "medium",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "medium",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
              }
            ]
          },
          {
            "url": "https://administracion.gob.es/pag_Home/ca/Tu-espacio-europeo/derechos-obligaciones/empresas/inicio-gestion-cierre/seguro-credito",
            "securityScore": 31,
            "dependencyScore": 2,
            "expectedFilesScore": 30,
            "compressionScore": 100,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Enable Brotli/gzip for text assets",
                "urgency": "high",
                "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "high",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
              },
              {
                "title": "Use modern image compression formats",
                "urgency": "medium",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "medium",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
              }
            ]
          },
          {
            "url": "https://administracion.gob.es/pag_Home/gl/index.html",
            "securityScore": 31,
            "dependencyScore": 2,
            "expectedFilesScore": 30,
            "compressionScore": 92,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Enable Brotli/gzip for text assets",
                "urgency": "high",
                "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "high",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
              },
              {
                "title": "Use modern image compression formats",
                "urgency": "high",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 688.02 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "medium",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
              }
            ]
          },
          {
            "url": "https://administracion.gob.es/pag_Home/va/index.html",
            "securityScore": 31,
            "dependencyScore": 2,
            "expectedFilesScore": 30,
            "compressionScore": 92,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Enable Brotli/gzip for text assets",
                "urgency": "high",
                "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "high",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
              },
              {
                "title": "Use modern image compression formats",
                "urgency": "high",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 688.02 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "medium",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
              }
            ]
          },
          {
            "url": "https://administracion.gob.es/",
            "securityScore": 31,
            "dependencyScore": 2,
            "expectedFilesScore": 30,
            "compressionScore": 91,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Enable Brotli/gzip for text assets",
                "urgency": "high",
                "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.39 MB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "high",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
              },
              {
                "title": "Use modern image compression formats",
                "urgency": "high",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 688.02 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "medium",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
              }
            ]
          },
          {
            "url": "https://administracion.gob.es/pag_Home",
            "securityScore": 31,
            "dependencyScore": 2,
            "expectedFilesScore": 30,
            "compressionScore": 91,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Enable Brotli/gzip for text assets",
                "urgency": "high",
                "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.39 MB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "high",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
              },
              {
                "title": "Use modern image compression formats",
                "urgency": "high",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 688.02 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "medium",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
              }
            ]
          },
          {
            "url": "https://administracion.gob.es/pag_Home/atencionCiudadana/encuentraTuOficina.html",
            "securityScore": 33,
            "dependencyScore": 4,
            "expectedFilesScore": 30,
            "compressionScore": 42,
            "optimizationScore": 100,
            "offlineScore": 100,
            "languageScore": 0,
            "urgency": "high",
            "topRecommendations": [
              {
                "title": "Enable Brotli/gzip for text assets",
                "urgency": "high",
                "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.77 MB."
              },
              {
                "title": "Minify CSS before transfer",
                "urgency": "high",
                "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.14 KB."
              },
              {
                "title": "Use modern image compression formats",
                "urgency": "high",
                "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 397.73 KB."
              },
              {
                "title": "Minify JavaScript before transfer",
                "urgency": "medium",
                "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 63.38 KB."
              }
            ]
          }
        ]
      }
    ]
  },
  "crossPagePatterns": {
    "heavyAssetPatterns": [
      {
        "key": "script|www.googletagmanager.com|/gtag",
        "label": "script assets from www.googletagmanager.com/gtag",
        "resourceType": "script",
        "domain": "www.googletagmanager.com",
        "pageCount": 100,
        "totalTransferBytes": 27416336,
        "exampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE"
      },
      {
        "key": "stylesheet|administracion.gob.es|/resources",
        "label": "stylesheet assets from administracion.gob.es/resources",
        "resourceType": "stylesheet",
        "domain": "administracion.gob.es",
        "pageCount": 99,
        "totalTransferBytes": 120876723,
        "exampleUrl": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css"
      },
      {
        "key": "image|administracion.gob.es|/resources",
        "label": "image assets from administracion.gob.es/resources",
        "resourceType": "image",
        "domain": "administracion.gob.es",
        "pageCount": 99,
        "totalTransferBytes": 15822727,
        "exampleUrl": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png"
      },
      {
        "key": "script|administracion.gob.es|/resources",
        "label": "script assets from administracion.gob.es/resources",
        "resourceType": "script",
        "domain": "administracion.gob.es",
        "pageCount": 90,
        "totalTransferBytes": 23262521,
        "exampleUrl": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js"
      },
      {
        "key": "image|administracion.gob.es|/dam",
        "label": "image assets from administracion.gob.es/dam",
        "resourceType": "image",
        "domain": "administracion.gob.es",
        "pageCount": 4,
        "totalTransferBytes": 2427208,
        "exampleUrl": "https://administracion.gob.es/dam/jcr:e31ce16e-02c8-487e-b5dc-8163515b1293/oficina-atencion.jpg"
      }
    ],
    "recurringTargets": [
      {
        "title": "Modularize heavy stylesheet asset from administracion.gob.es",
        "urgency": "high",
        "pageCount": 100,
        "totalEstimatedSavingsBytes": 117719410,
        "strategy": "Split this stylesheet so component-specific CSS is delivered only when the component is rendered."
      },
      {
        "title": "Split JavaScript by route or interaction",
        "urgency": "high",
        "pageCount": 100,
        "totalEstimatedSavingsBytes": 53629491,
        "strategy": "Move non-critical bundles behind route-level or event-driven imports so they are only fetched on demand."
      },
      {
        "title": "Lazy-load offscreen images and media galleries",
        "urgency": "high",
        "pageCount": 100,
        "totalEstimatedSavingsBytes": 10585524,
        "strategy": "Load imagery only when it enters the viewport or when a user opens the relevant section."
      },
      {
        "title": "Defer non-critical UI modules until after first render",
        "urgency": "high",
        "pageCount": 100,
        "totalEstimatedSavingsBytes": 0,
        "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later."
      },
      {
        "title": "Modularize heavy image asset from administracion.gob.es",
        "urgency": "high",
        "pageCount": 99,
        "totalEstimatedSavingsBytes": 17178503,
        "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component."
      },
      {
        "title": "Modularize heavy script asset from administracion.gob.es",
        "urgency": "medium",
        "pageCount": 90,
        "totalEstimatedSavingsBytes": 22897848,
        "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles."
      },
      {
        "title": "Modularize heavy script asset from www.googletagmanager.com",
        "urgency": "medium",
        "pageCount": 9,
        "totalEstimatedSavingsBytes": 1308704,
        "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles."
      }
    ],
    "recurringOrigins": [
      {
        "domain": "administracion.gob.es",
        "pageCount": 100,
        "totalTransferBytes": 164901121
      },
      {
        "domain": "www.googletagmanager.com",
        "pageCount": 100,
        "totalTransferBytes": 27416336
      }
    ],
    "designSystemGuidance": [
      "This same heavy image pattern appears on 99 pages. Fix it once in the shared template, CMS block, or design system component to reduce load across the whole site.",
      "These 2 script bundles are recurring modularization targets. Move the fix to the shared bundle or component boundary so every affected page gets lighter at once.",
      "These 3 modularization targets recur across multiple pages. Centralize the fix at the component or bundle level instead of treating each page separately.",
      "Heavy assets from administracion.gob.es recur across 100 pages. Review whether that dependency should be deferred, optimized, or loaded conditionally."
    ]
  },
  "results": [
    {
      "url": "https://administracion.gob.es/",
      "status": "ok",
      "finalUrl": "https://administracion.gob.es/",
      "performanceScore": 0.55,
      "bestPracticesScore": 0.75,
      "transferBytes": 3462349,
      "co2Grams": 1.3263615022086,
      "greenWeb": {
        "page": {
          "hostname": "administracion.gob.es",
          "checked": true,
          "status": "not-green",
          "green": false,
          "hostedBy": null,
          "hostedByWebsite": null,
          "listedProvider": null,
          "partner": null,
          "modified": "2026-03-29T13:38:28.588564",
          "supportingDocuments": [],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/administracion.gob.es",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 145726,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "not-green",
          "externalOriginCount": 1,
          "greenCount": 1,
          "notGreenCount": 1,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 70,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 0,
        "components": [
          {
            "signature": "form|get|/buscador/buscadorsimple.htm|input|text|q|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "q",
            "formContext": "form|get|/buscador/buscadorsimple.htm",
            "hasLabel": false,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 70,
              "urgency": "high",
              "issues": [
                "Missing associated label",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add a programmatic label using <label>, aria-label, or aria-labelledby.",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": false
          }
        ],
        "recommendations": [
          {
            "title": "Missing associated label",
            "urgency": "high",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 35,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": false,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Administracion.gob.es - Punto de Acceso General",
          "lang": "es",
          "charset": "",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "El Punto de Acceso General (administracion.gob.es) es un portal web que ofrece un punto único de acceso para el ciudadano a información de interés sobre las Administraciones Públicas y sobre sus trámites administrativos.",
          "robots": "all",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 38,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 72,
          "tabletSmallTapTargets": 120,
          "fixedWidthOffenders": 4,
          "oversizedMedia": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 2,
            "smallTapTargets": 72,
            "oversizedMedia": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 2,
            "smallTapTargets": 120,
            "oversizedMedia": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 72 small targets on mobile and 120 on tablet."
          },
          {
            "title": "Refactor fixed-width components",
            "urgency": "medium",
            "detail": "4 element(s) exceeded viewport width in tested layouts; use responsive component constraints."
          }
        ]
      },
      "securityLight": {
        "score": 31,
        "urgency": "medium",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": false,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "connection": "Keep-Alive",
            "content-encoding": "gzip",
            "content-length": "15357",
            "content-type": "text/html;charset=UTF-8",
            "date": "Mon, 30 Mar 2026 00:15:44 GMT",
            "keep-alive": "timeout=15, max=500",
            "referrer-policy": "origin-when-cross-origin,strict-origin-when-cross-origin",
            "server": "Microsoft-IIS/5.0",
            "set-cookie": "NEW_VISITOR=new; Expires=Tue, 31-Mar-2026 00:15:44 GMT; HttpOnly; Secure; SameSite=None\nVISITOR=returning; Path=/pag_Home/index.html; HttpOnly; Secure; SameSite=None\nTS01a8e1d0=01d9c3d3186e8e15b5b9edc17f17cb4b1f7777e3ed62999d88da62791f603954b0657e3ad206abe0e840a1f31af532847905d0382b90b7a84781f287b0f8ea376c270e95757560930f0447662c82f27874386d2204; Path=/; HttpOnly; Secure; SameSite=None\nTS013cc2a2=01d9c3d31875eb4ee065abf109a5ef141663ea9e5662999d88da62791f603954b0657e3ad206abe0e840a1f31af532847905d0382b90b7a84781f287b0f8ea376c270e95758790e5f992ab8a462f1118463bf9b8565956db104bfe20987b3f54c98e7c3998; path=/pag_Home/index.html; HttpOnly; Secure; SameSite=None",
            "strict-transport-security": "max-age=63072000; preload",
            "vary": "Accept-Encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1;mode=block",
            "traceresponse": "00-cc0326b94a5deb9188a7a4d6aee8dbd0-1385a1b906b77c9f-01",
            "x-dt-tracestate": "acd5d8fe-344161ca@dt"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add a Content-Security-Policy header",
            "urgency": "high",
            "detail": "Add an appropriate CSP to reduce script injection and resource loading risk."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 30,
        "urgency": "medium",
        "origin": "https://administracion.gob.es",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://administracion.gob.es/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/favicon.ico",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 91,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 3153228.45,
        "checks": {
          "hasEffectiveTextCompression": false
        },
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "estimatedSavingsBytes": 1462498,
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "estimatedSavingsBytes": 891965,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "high",
            "estimatedSavingsBytes": 704527.4500000001,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "estimatedSavingsBytes": 63759,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "estimatedSavingsBytes": 30479,
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings."
          }
        ],
        "recommendations": [
          {
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.39 MB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
          },
          {
            "title": "Use modern image compression formats",
            "urgency": "high",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 688.02 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
          },
          {
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 29.76 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 5442367.45,
        "totalEstimatedBlockingMs": 10075,
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable text compression",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat.",
            "estimatedSavingsBytes": 1462498,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,428 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-text-compression"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 1189756,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,162 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 891965,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 871 KiB",
            "urgency": "high",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 704527.4500000001,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 688 KiB",
            "urgency": "high",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 488212,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 477 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-responsive-images"
          },
          {
            "id": "unused-javascript",
            "title": "Remove unused JavaScript",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code.",
            "estimatedSavingsBytes": 421546,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 412 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-javascript"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 10075,
            "displayValue": "Est savings of 10,080 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "offscreen-images",
            "title": "Lazy-load offscreen images",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed.",
            "estimatedSavingsBytes": 189625,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 185 KiB",
            "urgency": "medium",
            "sourceAuditId": "offscreen-images"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 63759,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 62 KiB",
            "urgency": "medium",
            "sourceAuditId": "unminified-javascript"
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss.",
            "estimatedSavingsBytes": 30479,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 30 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-optimized-images"
          }
        ],
        "recommendations": [
          {
            "title": "Enable text compression",
            "urgency": "high",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat. Estimated byte savings: 1.39 MB."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "high",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 1.13 MB."
          },
          {
            "title": "Minify CSS",
            "urgency": "high",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 871.06 KB."
          },
          {
            "title": "Serve images in next-gen formats",
            "urgency": "high",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 688.02 KB."
          },
          {
            "title": "Right-size images for viewport",
            "urgency": "high",
            "detail": "Avoid sending larger images than the rendered size needs. Estimated byte savings: 476.77 KB."
          },
          {
            "title": "Remove unused JavaScript",
            "urgency": "high",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code. Estimated byte savings: 411.67 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 3297464
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 3.14 MB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 3.14 MB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 20,
        "urgency": "high",
        "transferBytes": 3462349,
        "css": {
          "unusedBytes": 1189756,
          "ratio": 0.3436268267583655,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 421546,
          "duplicatedBytes": 0,
          "ratio": 0.12175144677789558,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0.125,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "high",
            "estimatedSavingsBytes": 1189756,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          },
          {
            "area": "javascript",
            "title": "Remove unused JavaScript and feature bundles",
            "urgency": "high",
            "estimatedSavingsBytes": 421546,
            "strategy": "Drop unused packages and feature code, or move them behind route-level or interaction-triggered imports.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 27,
        "urgency": "high",
        "transferBytes": 3462349,
        "estimatedDeferrableBytes": 1800927,
        "renderBlockingMs": 10075,
        "breakdown": {
          "offscreenImageSavings": 189625,
          "unusedJavascriptSavings": 421546,
          "unusedCssSavings": 1189756
        },
        "candidates": [
          {
            "title": "Lazy-load offscreen images",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 189625,
            "strategy": "Load below-the-fold images only when they approach the viewport.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Defer non-critical JavaScript",
            "area": "javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 421546,
            "strategy": "Split bundles and load feature code on interaction or route transition.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1189756,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 10075,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy stylesheet from administracion.gob.es",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from administracion.gob.es",
            "area": "image",
            "urgency": "high",
            "estimatedSavingsBytes": 498764,
            "url": "https://administracion.gob.es/dam/jcr:e31ce16e-02c8-487e-b5dc-8163515b1293/oficina-atencion.jpg",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from administracion.gob.es",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 254418,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 17,
        "urgency": "low",
        "providerCount": 1,
        "requestCount": 1,
        "transferBytes": 145726,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 145726,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "low",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          }
        ]
      },
      "redundancy": {
        "score": 61,
        "urgency": "high",
        "transferBytes": 3462349,
        "estimatedRedundantBytes": 1611302,
        "redundancyRatio": 0.4653782735362611,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 1189756,
            "displayValue": "Est savings of 1,162 KiB"
          },
          {
            "auditId": "unused-javascript",
            "title": "Reduce unused JavaScript",
            "savingsBytes": 421546,
            "displayValue": "Est savings of 412 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "high",
            "estimatedSavingsBytes": 1189756,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce unused javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 421546,
            "auditId": "unused-javascript",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Enable and verify text compression",
            "urgency": "medium",
            "estimatedSavingsBytes": 1462498,
            "auditId": "uses-text-compression",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce DOM complexity and redundant markup",
            "urgency": "medium",
            "estimatedSavingsBytes": 0,
            "auditId": "dom-size",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 42,
        "urgency": "high",
        "totalTransferBytes": 3462349,
        "heavyRequestCount": 9,
        "heavyBytes": 2570077,
        "heavyRatio": 0.7422928768879162,
        "heavyRequests": [
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "transferSize": 1177193,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/dam/jcr:e31ce16e-02c8-487e-b5dc-8163515b1293/oficina-atencion.jpg",
            "transferSize": 498764,
            "resourceType": "image",
            "mimeType": "image/jpeg",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "transferSize": 254418,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "transferSize": 159817,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "transferSize": 145726,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://administracion.gob.es/dam/jcr:84743164-0af1-4ff3-9ba5-6b9d20d0a892/guias-tematicas.png",
            "transferSize": 108038,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery.mCustomScrollbar.js",
            "transferSize": 93601,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery.js",
            "transferSize": 88736,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/libs/jquery.mCustomScrollbar.css",
            "transferSize": 43784,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 1220977
          },
          {
            "resourceType": "image",
            "count": 3,
            "transferBytes": 766619
          },
          {
            "resourceType": "script",
            "count": 4,
            "transferBytes": 582481
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "administracion.gob.es",
            "count": 8,
            "transferBytes": 2424351
          },
          {
            "domain": "www.googletagmanager.com",
            "count": 1,
            "transferBytes": 145726
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Lazy-load offscreen images and media galleries",
            "urgency": "high",
            "estimatedSavingsBytes": 189625,
            "strategy": "Load imagery only when it enters the viewport or when a user opens the relevant section.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Split JavaScript by route or interaction",
            "urgency": "high",
            "estimatedSavingsBytes": 421546,
            "strategy": "Move non-critical bundles behind route-level or event-driven imports so they are only fetched on demand.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy stylesheet asset from administracion.gob.es",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "strategy": "Split this stylesheet so component-specific CSS is delivered only when the component is rendered.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from administracion.gob.es",
            "urgency": "high",
            "estimatedSavingsBytes": 498764,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://administracion.gob.es/dam/jcr:e31ce16e-02c8-487e-b5dc-8163515b1293/oficina-atencion.jpg",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 254418,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0,
          "displayValue": "17.1 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 17.1 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": 0.02,
          "displayValue": "13.3 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- Current value: 13.3 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": 0,
          "displayValue": "Est savings of 412 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- Current value: Est savings of 412 KiB\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 1,162 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 1,162 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0,
          "displayValue": "Est savings of 688 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 688 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 10,080 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 10,080 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": 0,
          "displayValue": "Est savings of 1,428 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- Current value: Est savings of 1,428 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-rel-preconnect",
          "title": "Preconnect to required origins",
          "description": "Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).",
          "score": 0,
          "displayValue": "Est savings of 340 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "issueTemplate": "## Improve Preconnect to required origins\n\n- Lighthouse audit: uses-rel-preconnect\n- Current value: Est savings of 340 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nConsider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 30 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- Current value: Est savings of 30 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 185 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- Current value: Est savings of 185 KiB\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "total-byte-weight",
          "title": "Avoid enormous network payloads",
          "description": "Large network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).",
          "score": 0.5,
          "displayValue": "Total size was 3,381 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "5",
            "categoryName": "Business Strategy And Product Management",
            "id": "25",
            "title": "Define performance and environmental budgets",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets",
            "subheading": "Set budgets, taking people, planet, and performance into account alongside baselines, targets, evidence, and resources to help meet KPIs."
          },
          "issueTemplate": "## Improve Avoid enormous network payloads\n\n- Lighthouse audit: total-byte-weight\n- Current value: Total size was 3,381 KiB\n- WSG guideline: 25 Define performance and environmental budgets\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets\n\n### Why this matters\nLarge network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "dom-size",
          "title": "Avoid an excessive DOM size",
          "description": "A large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).",
          "score": 0.5,
          "displayValue": "1,027 elements",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Avoid an excessive DOM size\n\n- Lighthouse audit: dom-size\n- Current value: 1,027 elements\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nA large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://administracion.gob.es/pag_Home",
      "status": "ok",
      "finalUrl": "https://administracion.gob.es/pag_Home",
      "performanceScore": 0.55,
      "bestPracticesScore": 0.75,
      "transferBytes": 3461481,
      "co2Grams": 1.3260289875534002,
      "greenWeb": {
        "page": {
          "hostname": "administracion.gob.es",
          "checked": true,
          "status": "not-green",
          "green": false,
          "hostedBy": null,
          "hostedByWebsite": null,
          "listedProvider": null,
          "partner": null,
          "modified": "2026-03-29T13:38:28.588564",
          "supportingDocuments": [],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/administracion.gob.es",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 145466,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "not-green",
          "externalOriginCount": 1,
          "greenCount": 1,
          "notGreenCount": 1,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 70,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/buscador/buscadorsimple.htm|input|text|q|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "q",
            "formContext": "form|get|/buscador/buscadorsimple.htm",
            "hasLabel": false,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 70,
              "urgency": "high",
              "issues": [
                "Missing associated label",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add a programmatic label using <label>, aria-label, or aria-labelledby.",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "Missing associated label",
            "urgency": "high",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 35,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": false,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Administracion.gob.es - Punto de Acceso General",
          "lang": "es",
          "charset": "",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "El Punto de Acceso General (administracion.gob.es) es un portal web que ofrece un punto único de acceso para el ciudadano a información de interés sobre las Administraciones Públicas y sobre sus trámites administrativos.",
          "robots": "all",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 38,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 72,
          "tabletSmallTapTargets": 120,
          "fixedWidthOffenders": 4,
          "oversizedMedia": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 2,
            "smallTapTargets": 72,
            "oversizedMedia": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 2,
            "smallTapTargets": 120,
            "oversizedMedia": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 72 small targets on mobile and 120 on tablet."
          },
          {
            "title": "Refactor fixed-width components",
            "urgency": "medium",
            "detail": "4 element(s) exceeded viewport width in tested layouts; use responsive component constraints."
          }
        ]
      },
      "securityLight": {
        "score": 31,
        "urgency": "medium",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": false,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "connection": "Keep-Alive",
            "content-encoding": "gzip",
            "content-type": "text/html;charset=UTF-8",
            "date": "Mon, 30 Mar 2026 00:16:12 GMT",
            "keep-alive": "timeout=15, max=500",
            "referrer-policy": "origin-when-cross-origin,strict-origin-when-cross-origin",
            "server": "Microsoft-IIS/5.0",
            "set-cookie": "NEW_VISITOR=new; Expires=Tue, 31-Mar-2026 00:16:12 GMT; HttpOnly; Secure; SameSite=None\nVISITOR=returning; Path=/pag_Home/index.html; HttpOnly; Secure; SameSite=None\nTS01a8e1d0=01d9c3d3186e8e15b5b9edc17f17cb4b1f7777e3ed62999d88da62791f603954b0657e3ad206abe0e840a1f31af532847905d0382b90b7a84781f287b0f8ea376c270e95757560930f0447662c82f27874386d2204; Path=/; HttpOnly; Secure; SameSite=None\nTS013cc2a2=01d9c3d31875eb4ee065abf109a5ef141663ea9e5662999d88da62791f603954b0657e3ad206abe0e840a1f31af532847905d0382b90b7a84781f287b0f8ea376c270e95758790e5f992ab8a462f1118463bf9b8565956db104bfe20987b3f54c98e7c3998; path=/pag_Home/index.html; HttpOnly; Secure; SameSite=None",
            "strict-transport-security": "max-age=63072000; preload",
            "transfer-encoding": "chunked",
            "vary": "Accept-Encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1;mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add a Content-Security-Policy header",
            "urgency": "high",
            "detail": "Add an appropriate CSP to reduce script injection and resource loading risk."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 30,
        "urgency": "medium",
        "origin": "https://administracion.gob.es",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://administracion.gob.es/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/favicon.ico",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 91,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 3153228.45,
        "checks": {
          "hasEffectiveTextCompression": false
        },
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "estimatedSavingsBytes": 1462498,
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "estimatedSavingsBytes": 891965,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "high",
            "estimatedSavingsBytes": 704527.4500000001,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "estimatedSavingsBytes": 63759,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "estimatedSavingsBytes": 30479,
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings."
          }
        ],
        "recommendations": [
          {
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.39 MB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
          },
          {
            "title": "Use modern image compression formats",
            "urgency": "high",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 688.02 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
          },
          {
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 29.76 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 5488350.45,
        "totalEstimatedBlockingMs": 9815,
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable text compression",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat.",
            "estimatedSavingsBytes": 1462498,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,428 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-text-compression"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 1189756,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,162 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 891965,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 871 KiB",
            "urgency": "high",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 704527.4500000001,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 688 KiB",
            "urgency": "high",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 488212,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 477 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-responsive-images"
          },
          {
            "id": "unused-javascript",
            "title": "Remove unused JavaScript",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code.",
            "estimatedSavingsBytes": 422865,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 413 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-javascript"
          },
          {
            "id": "offscreen-images",
            "title": "Lazy-load offscreen images",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed.",
            "estimatedSavingsBytes": 234289,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 229 KiB",
            "urgency": "high",
            "sourceAuditId": "offscreen-images"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9815,
            "displayValue": "Est savings of 9,820 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 63759,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 62 KiB",
            "urgency": "medium",
            "sourceAuditId": "unminified-javascript"
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss.",
            "estimatedSavingsBytes": 30479,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 30 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-optimized-images"
          }
        ],
        "recommendations": [
          {
            "title": "Enable text compression",
            "urgency": "high",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat. Estimated byte savings: 1.39 MB."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "high",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 1.13 MB."
          },
          {
            "title": "Minify CSS",
            "urgency": "high",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 871.06 KB."
          },
          {
            "title": "Serve images in next-gen formats",
            "urgency": "high",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 688.02 KB."
          },
          {
            "title": "Right-size images for viewport",
            "urgency": "high",
            "detail": "Avoid sending larger images than the rendered size needs. Estimated byte savings: 476.77 KB."
          },
          {
            "title": "Remove unused JavaScript",
            "urgency": "high",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code. Estimated byte savings: 412.95 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 3297462
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 3.14 MB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 3.14 MB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 20,
        "urgency": "high",
        "transferBytes": 3461481,
        "css": {
          "unusedBytes": 1189756,
          "ratio": 0.34371299452459797,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 422865,
          "duplicatedBytes": 0,
          "ratio": 0.12216302790626324,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0.125,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "high",
            "estimatedSavingsBytes": 1189756,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          },
          {
            "area": "javascript",
            "title": "Remove unused JavaScript and feature bundles",
            "urgency": "high",
            "estimatedSavingsBytes": 422865,
            "strategy": "Drop unused packages and feature code, or move them behind route-level or interaction-triggered imports.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 28,
        "urgency": "high",
        "transferBytes": 3461481,
        "estimatedDeferrableBytes": 1846910,
        "renderBlockingMs": 9815,
        "breakdown": {
          "offscreenImageSavings": 234289,
          "unusedJavascriptSavings": 422865,
          "unusedCssSavings": 1189756
        },
        "candidates": [
          {
            "title": "Lazy-load offscreen images",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 234289,
            "strategy": "Load below-the-fold images only when they approach the viewport.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Defer non-critical JavaScript",
            "area": "javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 422865,
            "strategy": "Split bundles and load feature code on interaction or route transition.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1189756,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9815,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy stylesheet from administracion.gob.es",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from administracion.gob.es",
            "area": "image",
            "urgency": "high",
            "estimatedSavingsBytes": 498764,
            "url": "https://administracion.gob.es/dam/jcr:e31ce16e-02c8-487e-b5dc-8163515b1293/oficina-atencion.jpg",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from administracion.gob.es",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 254411,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 17,
        "urgency": "low",
        "providerCount": 1,
        "requestCount": 1,
        "transferBytes": 145466,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 145466,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "low",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          }
        ]
      },
      "redundancy": {
        "score": 61,
        "urgency": "high",
        "transferBytes": 3461481,
        "estimatedRedundantBytes": 1612621,
        "redundancyRatio": 0.46587602243086124,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 1189756,
            "displayValue": "Est savings of 1,162 KiB"
          },
          {
            "auditId": "unused-javascript",
            "title": "Reduce unused JavaScript",
            "savingsBytes": 422865,
            "displayValue": "Est savings of 413 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "high",
            "estimatedSavingsBytes": 1189756,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce unused javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 422865,
            "auditId": "unused-javascript",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Enable and verify text compression",
            "urgency": "medium",
            "estimatedSavingsBytes": 1462498,
            "auditId": "uses-text-compression",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce DOM complexity and redundant markup",
            "urgency": "medium",
            "estimatedSavingsBytes": 0,
            "auditId": "dom-size",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 43,
        "urgency": "high",
        "totalTransferBytes": 3461481,
        "heavyRequestCount": 9,
        "heavyBytes": 2569815,
        "heavyRatio": 0.7424033238951767,
        "heavyRequests": [
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "transferSize": 1177193,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/dam/jcr:e31ce16e-02c8-487e-b5dc-8163515b1293/oficina-atencion.jpg",
            "transferSize": 498764,
            "resourceType": "image",
            "mimeType": "image/jpeg",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "transferSize": 254411,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "transferSize": 159823,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "transferSize": 145466,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://administracion.gob.es/dam/jcr:84743164-0af1-4ff3-9ba5-6b9d20d0a892/guias-tematicas.png",
            "transferSize": 108038,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery.mCustomScrollbar.js",
            "transferSize": 93600,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery.js",
            "transferSize": 88736,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/libs/jquery.mCustomScrollbar.css",
            "transferSize": 43784,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 1220977
          },
          {
            "resourceType": "image",
            "count": 3,
            "transferBytes": 766625
          },
          {
            "resourceType": "script",
            "count": 4,
            "transferBytes": 582213
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "administracion.gob.es",
            "count": 8,
            "transferBytes": 2424349
          },
          {
            "domain": "www.googletagmanager.com",
            "count": 1,
            "transferBytes": 145466
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Lazy-load offscreen images and media galleries",
            "urgency": "high",
            "estimatedSavingsBytes": 234289,
            "strategy": "Load imagery only when it enters the viewport or when a user opens the relevant section.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Split JavaScript by route or interaction",
            "urgency": "high",
            "estimatedSavingsBytes": 422865,
            "strategy": "Move non-critical bundles behind route-level or event-driven imports so they are only fetched on demand.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy stylesheet asset from administracion.gob.es",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "strategy": "Split this stylesheet so component-specific CSS is delivered only when the component is rendered.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from administracion.gob.es",
            "urgency": "high",
            "estimatedSavingsBytes": 498764,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://administracion.gob.es/dam/jcr:e31ce16e-02c8-487e-b5dc-8163515b1293/oficina-atencion.jpg",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 254411,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0,
          "displayValue": "14.9 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 14.9 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": 0.03,
          "displayValue": "12.3 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- Current value: 12.3 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": 0,
          "displayValue": "Est savings of 413 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- Current value: Est savings of 413 KiB\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 1,162 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 1,162 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0,
          "displayValue": "Est savings of 688 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 688 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 9,820 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 9,820 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": 0,
          "displayValue": "Est savings of 1,428 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- Current value: Est savings of 1,428 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 30 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- Current value: Est savings of 30 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 229 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- Current value: Est savings of 229 KiB\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "total-byte-weight",
          "title": "Avoid enormous network payloads",
          "description": "Large network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).",
          "score": 0.5,
          "displayValue": "Total size was 3,380 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "5",
            "categoryName": "Business Strategy And Product Management",
            "id": "25",
            "title": "Define performance and environmental budgets",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets",
            "subheading": "Set budgets, taking people, planet, and performance into account alongside baselines, targets, evidence, and resources to help meet KPIs."
          },
          "issueTemplate": "## Improve Avoid enormous network payloads\n\n- Lighthouse audit: total-byte-weight\n- Current value: Total size was 3,380 KiB\n- WSG guideline: 25 Define performance and environmental budgets\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets\n\n### Why this matters\nLarge network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "dom-size",
          "title": "Avoid an excessive DOM size",
          "description": "A large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).",
          "score": 0.5,
          "displayValue": "1,027 elements",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Avoid an excessive DOM size\n\n- Lighthouse audit: dom-size\n- Current value: 1,027 elements\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nA large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/asistencia-sanitaria/centros-atencion-sociosanitaria",
      "status": "ok",
      "finalUrl": "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/asistencia-sanitaria/centros-atencion-sociosanitaria",
      "performanceScore": 0.56,
      "bestPracticesScore": 0.79,
      "transferBytes": 1964496,
      "co2Grams": 0.7525618779744002,
      "greenWeb": {
        "page": {
          "hostname": "administracion.gob.es",
          "checked": true,
          "status": "not-green",
          "green": false,
          "hostedBy": null,
          "hostedByWebsite": null,
          "listedProvider": null,
          "partner": null,
          "modified": "2026-03-29T13:38:28.588564",
          "supportingDocuments": [],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/administracion.gob.es",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290023,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "not-green",
          "externalOriginCount": 1,
          "greenCount": 1,
          "notGreenCount": 1,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 70,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/buscador/buscadorsimple.htm|input|text|q|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "q",
            "formContext": "form|get|/buscador/buscadorsimple.htm",
            "hasLabel": false,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 70,
              "urgency": "high",
              "issues": [
                "Missing associated label",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add a programmatic label using <label>, aria-label, or aria-labelledby.",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "Missing associated label",
            "urgency": "high",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 35,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": false,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Centros de atención socio-sanitaria - Asistencia sanitaria - Ciudadanos - Tus derechos y obligaciones en la UE - Tu espacio europeo - Punto de Acceso General",
          "lang": "es",
          "charset": "",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Conoce los centros de atención socio-sanitaria del Imserso y los Centros de Referencia Estatales.",
          "robots": "all",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 38,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 55,
          "tabletSmallTapTargets": 85,
          "fixedWidthOffenders": 4,
          "oversizedMedia": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 399,
            "viewportHeight": 864,
            "contentWidth": 399,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 4,
            "smallTapTargets": 55,
            "oversizedMedia": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 829,
            "viewportHeight": 1193,
            "contentWidth": 829,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 85,
            "oversizedMedia": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 55 small targets on mobile and 85 on tablet."
          },
          {
            "title": "Refactor fixed-width components",
            "urgency": "medium",
            "detail": "4 element(s) exceeded viewport width in tested layouts; use responsive component constraints."
          }
        ]
      },
      "securityLight": {
        "score": 33,
        "urgency": "medium",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": false,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 2,
          "externalScriptsWithoutIntegrity": 2,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "connection": "Keep-Alive",
            "content-encoding": "gzip",
            "content-length": "23027",
            "content-type": "text/html;charset=UTF-8",
            "date": "Mon, 30 Mar 2026 00:16:35 GMT",
            "keep-alive": "timeout=15, max=500",
            "referrer-policy": "origin-when-cross-origin,strict-origin-when-cross-origin",
            "server": "Microsoft-IIS/5.0",
            "set-cookie": "VISITOR=returning; Path=/pag_Home/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/asistencia-sanitaria; HttpOnly; Secure; SameSite=None\nTS01a8e1d0=01d9c3d3186e8e15b5b9edc17f17cb4b1f7777e3ed62999d88da62791f603954b0657e3ad206abe0e840a1f31af532847905d0382b90b7a84781f287b0f8ea376c270e95757560930f0447662c82f27874386d2204; Path=/; HttpOnly; Secure; SameSite=None\nTS019fb4ca=01d9c3d31875eb4ee065abf109a5ef141663ea9e5662999d88da62791f603954b0657e3ad206abe0e840a1f31af532847905d0382b90b7a84781f287b0f8ea376c270e95758790e5f992ab8a462f1118463bf9b8565956db104bfe20987b3f54c98e7c3998; path=/pag_Home/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/asistencia-sanitaria; HttpOnly; Secure; SameSite=None",
            "strict-transport-security": "max-age=63072000; preload",
            "vary": "Accept-Encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1;mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add a Content-Security-Policy header",
            "urgency": "high",
            "detail": "Add an appropriate CSP to reduce script injection and resource loading risk."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "2 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 30,
        "urgency": "medium",
        "origin": "https://administracion.gob.es",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://administracion.gob.es/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/favicon.ico",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 2197475.2,
        "checks": {
          "hasEffectiveTextCompression": false
        },
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "estimatedSavingsBytes": 1107520,
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "estimatedSavingsBytes": 891965,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "estimatedSavingsBytes": 126680.2,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "estimatedSavingsBytes": 63759,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "estimatedSavingsBytes": 7551,
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings."
          }
        ],
        "recommendations": [
          {
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.06 MB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
          },
          {
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
          },
          {
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 7.37 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 4049563.2,
        "totalEstimatedBlockingMs": 7727,
        "opportunities": [
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 1194677,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,167 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "uses-text-compression",
            "title": "Enable text compression",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat.",
            "estimatedSavingsBytes": 1107520,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,082 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-text-compression"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 891965,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 871 KiB",
            "urgency": "high",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unused-javascript",
            "title": "Remove unused JavaScript",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code.",
            "estimatedSavingsBytes": 530995,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 519 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-javascript"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 7727,
            "displayValue": "Est savings of 7,730 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 126680.2,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 124 KiB",
            "urgency": "medium",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "offscreen-images",
            "title": "Lazy-load offscreen images",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed.",
            "estimatedSavingsBytes": 119704,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 117 KiB",
            "urgency": "medium",
            "sourceAuditId": "offscreen-images"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 63759,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 62 KiB",
            "urgency": "medium",
            "sourceAuditId": "unminified-javascript"
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss.",
            "estimatedSavingsBytes": 7551,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-optimized-images"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 6712,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-responsive-images"
          }
        ],
        "recommendations": [
          {
            "title": "Remove unused CSS",
            "urgency": "high",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 1.14 MB."
          },
          {
            "title": "Enable text compression",
            "urgency": "high",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat. Estimated byte savings: 1.06 MB."
          },
          {
            "title": "Minify CSS",
            "urgency": "high",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 871.06 KB."
          },
          {
            "title": "Remove unused JavaScript",
            "urgency": "high",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code. Estimated byte savings: 518.55 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 7727 ms."
          },
          {
            "title": "Serve images in next-gen formats",
            "urgency": "medium",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 123.71 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 4,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 2,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "2 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1648391
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.57 MB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.57 MB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 36,
        "urgency": "high",
        "transferBytes": 1964496,
        "css": {
          "unusedBytes": 1194677,
          "ratio": 0.6081340964807258,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 530995,
          "duplicatedBytes": 0,
          "ratio": 0.27029579087969635,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0.125,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "high",
            "estimatedSavingsBytes": 1194677,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          },
          {
            "area": "javascript",
            "title": "Remove unused JavaScript and feature bundles",
            "urgency": "high",
            "estimatedSavingsBytes": 530995,
            "strategy": "Drop unused packages and feature code, or move them behind route-level or interaction-triggered imports.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 37,
        "urgency": "high",
        "transferBytes": 1964496,
        "estimatedDeferrableBytes": 1845376,
        "renderBlockingMs": 7727,
        "breakdown": {
          "offscreenImageSavings": 119704,
          "unusedJavascriptSavings": 530995,
          "unusedCssSavings": 1194677
        },
        "candidates": [
          {
            "title": "Lazy-load offscreen images",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 119704,
            "strategy": "Load below-the-fold images only when they approach the viewport.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Defer non-critical JavaScript",
            "area": "javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 530995,
            "strategy": "Split bundles and load feature code on interaction or route transition.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1194677,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 7727,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy stylesheet from administracion.gob.es",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from administracion.gob.es",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 159817,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.googletagmanager.com",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 145359,
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 34,
        "urgency": "medium",
        "providerCount": 1,
        "requestCount": 2,
        "transferBytes": 290023,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290023,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "medium",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "medium",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          }
        ]
      },
      "redundancy": {
        "score": 81,
        "urgency": "high",
        "transferBytes": 1964496,
        "estimatedRedundantBytes": 1725672,
        "redundancyRatio": 0.8784298873604223,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 1194677,
            "displayValue": "Est savings of 1,167 KiB"
          },
          {
            "auditId": "unused-javascript",
            "title": "Reduce unused JavaScript",
            "savingsBytes": 530995,
            "displayValue": "Est savings of 519 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "high",
            "estimatedSavingsBytes": 1194677,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce unused javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 530995,
            "auditId": "unused-javascript",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Enable and verify text compression",
            "urgency": "medium",
            "estimatedSavingsBytes": 1107520,
            "auditId": "uses-text-compression",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce DOM complexity and redundant markup",
            "urgency": "medium",
            "estimatedSavingsBytes": 0,
            "auditId": "dom-size",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 46,
        "urgency": "high",
        "totalTransferBytes": 1964496,
        "heavyRequestCount": 5,
        "heavyBytes": 1670817,
        "heavyRatio": 0.8505066948469225,
        "heavyRequests": [
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "transferSize": 1177193,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "transferSize": 159817,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "transferSize": 145359,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-4YNNM3J1E0&cx=c&gtm=4e63p1",
            "transferSize": 144664,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/libs/jquery.mCustomScrollbar.css",
            "transferSize": 43784,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 1220977
          },
          {
            "resourceType": "script",
            "count": 2,
            "transferBytes": 290023
          },
          {
            "resourceType": "image",
            "count": 1,
            "transferBytes": 159817
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "administracion.gob.es",
            "count": 3,
            "transferBytes": 1380794
          },
          {
            "domain": "www.googletagmanager.com",
            "count": 2,
            "transferBytes": 290023
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Lazy-load offscreen images and media galleries",
            "urgency": "medium",
            "estimatedSavingsBytes": 119704,
            "strategy": "Load imagery only when it enters the viewport or when a user opens the relevant section.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Split JavaScript by route or interaction",
            "urgency": "high",
            "estimatedSavingsBytes": 530995,
            "strategy": "Move non-critical bundles behind route-level or event-driven imports so they are only fetched on demand.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy stylesheet asset from administracion.gob.es",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "strategy": "Split this stylesheet so component-specific CSS is delivered only when the component is rendered.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 159817,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from www.googletagmanager.com",
            "urgency": "medium",
            "estimatedSavingsBytes": 145359,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0,
          "displayValue": "10.7 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 10.7 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": 0.1,
          "displayValue": "9.8 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- Current value: 9.8 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": 0,
          "displayValue": "Est savings of 519 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- Current value: Est savings of 519 KiB\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 1,167 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 1,167 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 7,730 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 7,730 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": 0,
          "displayValue": "Est savings of 1,082 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- Current value: Est savings of 1,082 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 124 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 124 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 7 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- Current value: Est savings of 7 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 117 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- Current value: Est savings of 117 KiB\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "dom-size",
          "title": "Avoid an excessive DOM size",
          "description": "A large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).",
          "score": 0.5,
          "displayValue": "1,017 elements",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Avoid an excessive DOM size\n\n- Lighthouse audit: dom-size\n- Current value: 1,017 elements\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nA large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/asistencia-sanitaria/estancia-TSE",
      "status": "ok",
      "finalUrl": "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/asistencia-sanitaria/estancia-TSE",
      "performanceScore": 0.55,
      "bestPracticesScore": 0.79,
      "transferBytes": 1933758,
      "co2Grams": 0.7407867219012001,
      "greenWeb": {
        "page": {
          "hostname": "administracion.gob.es",
          "checked": true,
          "status": "not-green",
          "green": false,
          "hostedBy": null,
          "hostedByWebsite": null,
          "listedProvider": null,
          "partner": null,
          "modified": "2026-03-29T13:38:28.588564",
          "supportingDocuments": [],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/administracion.gob.es",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290499,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "not-green",
          "externalOriginCount": 1,
          "greenCount": 1,
          "notGreenCount": 1,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 70,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/buscador/buscadorsimple.htm|input|text|q|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "q",
            "formContext": "form|get|/buscador/buscadorsimple.htm",
            "hasLabel": false,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 70,
              "urgency": "high",
              "issues": [
                "Missing associated label",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add a programmatic label using <label>, aria-label, or aria-labelledby.",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "Missing associated label",
            "urgency": "high",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 35,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": false,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Asistencia sanitaria durante la estancia en otro país de la UE y Tarjeta Sanitaria Europea (TSE) - Asistencia sanitaria - Ciudadanos - Tus derechos y obligaciones en la UE - Tu espacio europeo - Punto de Acceso General",
          "lang": "es",
          "charset": "",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Derechos y obligaciones a la asistencia sanitaria durante la estancia en otro país de la UE. Qué es y cómo solicitar la tarjeta sanitaria europea.",
          "robots": "all",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 38,
          "tabletSmallTapTargets": 69,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 399,
            "viewportHeight": 864,
            "contentWidth": 399,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 38,
            "oversizedMedia": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 829,
            "viewportHeight": 1193,
            "contentWidth": 829,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 69,
            "oversizedMedia": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 38 small targets on mobile and 69 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 31,
        "urgency": "medium",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": false,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "connection": "Keep-Alive",
            "content-encoding": "gzip",
            "content-length": "15011",
            "content-type": "text/html;charset=UTF-8",
            "date": "Mon, 30 Mar 2026 00:17:00 GMT",
            "keep-alive": "timeout=15, max=500",
            "referrer-policy": "origin-when-cross-origin,strict-origin-when-cross-origin",
            "server": "Microsoft-IIS/5.0",
            "set-cookie": "VISITOR=returning; Path=/pag_Home/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/asistencia-sanitaria; HttpOnly; Secure; SameSite=None\nTS01a8e1d0=01d9c3d3186e8e15b5b9edc17f17cb4b1f7777e3ed62999d88da62791f603954b0657e3ad206abe0e840a1f31af532847905d0382b90b7a84781f287b0f8ea376c270e95757560930f0447662c82f27874386d2204; Path=/; HttpOnly; Secure; SameSite=None\nTS019fb4ca=01d9c3d31875eb4ee065abf109a5ef141663ea9e5662999d88da62791f603954b0657e3ad206abe0e840a1f31af532847905d0382b90b7a84781f287b0f8ea376c270e95758790e5f992ab8a462f1118463bf9b8565956db104bfe20987b3f54c98e7c3998; path=/pag_Home/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/asistencia-sanitaria; HttpOnly; Secure; SameSite=None",
            "strict-transport-security": "max-age=63072000; preload",
            "vary": "Accept-Encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1;mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add a Content-Security-Policy header",
            "urgency": "high",
            "detail": "Add an appropriate CSP to reduce script injection and resource loading risk."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 30,
        "urgency": "medium",
        "origin": "https://administracion.gob.es",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://administracion.gob.es/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/favicon.ico",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 2197475.2,
        "checks": {
          "hasEffectiveTextCompression": false
        },
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "estimatedSavingsBytes": 1107520,
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "estimatedSavingsBytes": 891965,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "estimatedSavingsBytes": 126680.2,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "estimatedSavingsBytes": 63759,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "estimatedSavingsBytes": 7551,
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings."
          }
        ],
        "recommendations": [
          {
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.06 MB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
          },
          {
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
          },
          {
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 7.37 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 4050090.2,
        "totalEstimatedBlockingMs": 7973,
        "opportunities": [
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 1195718,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,168 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "uses-text-compression",
            "title": "Enable text compression",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat.",
            "estimatedSavingsBytes": 1107520,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,082 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-text-compression"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 891965,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 871 KiB",
            "urgency": "high",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unused-javascript",
            "title": "Remove unused JavaScript",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code.",
            "estimatedSavingsBytes": 547300,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 534 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-javascript"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 7973,
            "displayValue": "Est savings of 7,970 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 126680.2,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 124 KiB",
            "urgency": "medium",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "offscreen-images",
            "title": "Lazy-load offscreen images",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed.",
            "estimatedSavingsBytes": 102885,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 100 KiB",
            "urgency": "medium",
            "sourceAuditId": "offscreen-images"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 63759,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 62 KiB",
            "urgency": "medium",
            "sourceAuditId": "unminified-javascript"
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss.",
            "estimatedSavingsBytes": 7551,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-optimized-images"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 6712,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-responsive-images"
          }
        ],
        "recommendations": [
          {
            "title": "Remove unused CSS",
            "urgency": "high",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 1.14 MB."
          },
          {
            "title": "Enable text compression",
            "urgency": "high",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat. Estimated byte savings: 1.06 MB."
          },
          {
            "title": "Minify CSS",
            "urgency": "high",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 871.06 KB."
          },
          {
            "title": "Remove unused JavaScript",
            "urgency": "high",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code. Estimated byte savings: 534.47 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 7973 ms."
          },
          {
            "title": "Serve images in next-gen formats",
            "urgency": "medium",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 123.71 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1625373
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.55 MB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.55 MB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 34,
        "urgency": "high",
        "transferBytes": 1933758,
        "css": {
          "unusedBytes": 1195718,
          "ratio": 0.6183390062251843,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 547300,
          "duplicatedBytes": 0,
          "ratio": 0.28302403920242347,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "high",
            "estimatedSavingsBytes": 1195718,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          },
          {
            "area": "javascript",
            "title": "Remove unused JavaScript and feature bundles",
            "urgency": "high",
            "estimatedSavingsBytes": 547300,
            "strategy": "Drop unused packages and feature code, or move them behind route-level or interaction-triggered imports.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 38,
        "urgency": "high",
        "transferBytes": 1933758,
        "estimatedDeferrableBytes": 1845903,
        "renderBlockingMs": 7973,
        "breakdown": {
          "offscreenImageSavings": 102885,
          "unusedJavascriptSavings": 547300,
          "unusedCssSavings": 1195718
        },
        "candidates": [
          {
            "title": "Lazy-load offscreen images",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 102885,
            "strategy": "Load below-the-fold images only when they approach the viewport.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Defer non-critical JavaScript",
            "area": "javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 547300,
            "strategy": "Split bundles and load feature code on interaction or route transition.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1195718,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 7973,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy stylesheet from administracion.gob.es",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from administracion.gob.es",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.googletagmanager.com",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 145726,
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 34,
        "urgency": "medium",
        "providerCount": 1,
        "requestCount": 2,
        "transferBytes": 290499,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290499,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "medium",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "medium",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          }
        ]
      },
      "redundancy": {
        "score": 72,
        "urgency": "high",
        "transferBytes": 1933758,
        "estimatedRedundantBytes": 1743018,
        "redundancyRatio": 0.9013630454276078,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 1195718,
            "displayValue": "Est savings of 1,168 KiB"
          },
          {
            "auditId": "unused-javascript",
            "title": "Reduce unused JavaScript",
            "savingsBytes": 547300,
            "displayValue": "Est savings of 534 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "high",
            "estimatedSavingsBytes": 1195718,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce unused javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 547300,
            "auditId": "unused-javascript",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Enable and verify text compression",
            "urgency": "medium",
            "estimatedSavingsBytes": 1107520,
            "auditId": "uses-text-compression",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 46,
        "urgency": "high",
        "totalTransferBytes": 1933758,
        "heavyRequestCount": 5,
        "heavyBytes": 1671299,
        "heavyRatio": 0.8642751574912683,
        "heavyRequests": [
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "transferSize": 1177193,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "transferSize": 159823,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "transferSize": 145726,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-4YNNM3J1E0&cx=c&gtm=4e63p1",
            "transferSize": 144773,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/libs/jquery.mCustomScrollbar.css",
            "transferSize": 43784,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 1220977
          },
          {
            "resourceType": "script",
            "count": 2,
            "transferBytes": 290499
          },
          {
            "resourceType": "image",
            "count": 1,
            "transferBytes": 159823
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "administracion.gob.es",
            "count": 3,
            "transferBytes": 1380800
          },
          {
            "domain": "www.googletagmanager.com",
            "count": 2,
            "transferBytes": 290499
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Lazy-load offscreen images and media galleries",
            "urgency": "medium",
            "estimatedSavingsBytes": 102885,
            "strategy": "Load imagery only when it enters the viewport or when a user opens the relevant section.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Split JavaScript by route or interaction",
            "urgency": "high",
            "estimatedSavingsBytes": 547300,
            "strategy": "Move non-critical bundles behind route-level or event-driven imports so they are only fetched on demand.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy stylesheet asset from administracion.gob.es",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "strategy": "Split this stylesheet so component-specific CSS is delivered only when the component is rendered.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from www.googletagmanager.com",
            "urgency": "medium",
            "estimatedSavingsBytes": 145726,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0,
          "displayValue": "10.7 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 10.7 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": 0.01,
          "displayValue": "13.8 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- Current value: 13.8 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": 0,
          "displayValue": "Est savings of 534 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- Current value: Est savings of 534 KiB\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 1,168 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 1,168 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 7,970 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 7,970 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": 0,
          "displayValue": "Est savings of 1,082 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- Current value: Est savings of 1,082 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 124 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 124 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 7 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- Current value: Est savings of 7 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 100 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- Current value: Est savings of 100 KiB\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/asistencia-sanitaria/numeros-urgencia",
      "status": "ok",
      "finalUrl": "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/asistencia-sanitaria/numeros-urgencia",
      "performanceScore": 0.55,
      "bestPracticesScore": 0.79,
      "transferBytes": 1968666,
      "co2Grams": 0.7541593274124002,
      "greenWeb": {
        "page": {
          "hostname": "administracion.gob.es",
          "checked": true,
          "status": "not-green",
          "green": false,
          "hostedBy": null,
          "hostedByWebsite": null,
          "listedProvider": null,
          "partner": null,
          "modified": "2026-03-29T13:38:28.588564",
          "supportingDocuments": [],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/administracion.gob.es",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290018,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "not-green",
          "externalOriginCount": 1,
          "greenCount": 1,
          "notGreenCount": 1,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 70,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/buscador/buscadorsimple.htm|input|text|q|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "q",
            "formContext": "form|get|/buscador/buscadorsimple.htm",
            "hasLabel": false,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 70,
              "urgency": "high",
              "issues": [
                "Missing associated label",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add a programmatic label using <label>, aria-label, or aria-labelledby.",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "Missing associated label",
            "urgency": "high",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 35,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": false,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Servicios prestados a través de números de urgencia nacionales (112) - Asistencia sanitaria - Ciudadanos - Tus derechos y obligaciones en la UE - Tu espacio europeo - Punto de Acceso General",
          "lang": "es",
          "charset": "",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Conoce el número de emergencias, acceso y características del servicio.",
          "robots": "all",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 47,
          "tabletSmallTapTargets": 81,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 399,
            "viewportHeight": 864,
            "contentWidth": 399,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 47,
            "oversizedMedia": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 829,
            "viewportHeight": 1193,
            "contentWidth": 829,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 81,
            "oversizedMedia": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 47 small targets on mobile and 81 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 31,
        "urgency": "medium",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": false,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "connection": "Keep-Alive",
            "content-encoding": "gzip",
            "content-type": "text/html;charset=UTF-8",
            "date": "Mon, 30 Mar 2026 00:17:24 GMT",
            "keep-alive": "timeout=15, max=500",
            "referrer-policy": "origin-when-cross-origin,strict-origin-when-cross-origin",
            "server": "Microsoft-IIS/5.0",
            "set-cookie": "VISITOR=returning; Path=/pag_Home/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/asistencia-sanitaria; HttpOnly; Secure; SameSite=None\nTS01a8e1d0=01d9c3d3186e8e15b5b9edc17f17cb4b1f7777e3ed62999d88da62791f603954b0657e3ad206abe0e840a1f31af532847905d0382b90b7a84781f287b0f8ea376c270e95757560930f0447662c82f27874386d2204; Path=/; HttpOnly; Secure; SameSite=None\nTS019fb4ca=01d9c3d31875eb4ee065abf109a5ef141663ea9e5662999d88da62791f603954b0657e3ad206abe0e840a1f31af532847905d0382b90b7a84781f287b0f8ea376c270e95758790e5f992ab8a462f1118463bf9b8565956db104bfe20987b3f54c98e7c3998; path=/pag_Home/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/asistencia-sanitaria; HttpOnly; Secure; SameSite=None",
            "strict-transport-security": "max-age=63072000; preload",
            "transfer-encoding": "chunked",
            "vary": "Accept-Encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1;mode=block",
            "traceresponse": "00-5df338e56e7900f248c431acd1c33742-6a9d3d90a950d21c-01",
            "x-dt-tracestate": "acd5d8fe-344161ca@dt"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add a Content-Security-Policy header",
            "urgency": "high",
            "detail": "Add an appropriate CSP to reduce script injection and resource loading risk."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 30,
        "urgency": "medium",
        "origin": "https://administracion.gob.es",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://administracion.gob.es/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/favicon.ico",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 2197475.2,
        "checks": {
          "hasEffectiveTextCompression": false
        },
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "estimatedSavingsBytes": 1107520,
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "estimatedSavingsBytes": 891965,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "estimatedSavingsBytes": 126680.2,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "estimatedSavingsBytes": 63759,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "estimatedSavingsBytes": 7551,
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings."
          }
        ],
        "recommendations": [
          {
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.06 MB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
          },
          {
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
          },
          {
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 7.37 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 4076096.2,
        "totalEstimatedBlockingMs": 7742,
        "opportunities": [
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 1195529,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,168 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "uses-text-compression",
            "title": "Enable text compression",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat.",
            "estimatedSavingsBytes": 1107520,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,082 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-text-compression"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 891965,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 871 KiB",
            "urgency": "high",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unused-javascript",
            "title": "Remove unused JavaScript",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code.",
            "estimatedSavingsBytes": 547290,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 534 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-javascript"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 7742,
            "displayValue": "Est savings of 7,740 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "offscreen-images",
            "title": "Lazy-load offscreen images",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed.",
            "estimatedSavingsBytes": 129090,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 126 KiB",
            "urgency": "medium",
            "sourceAuditId": "offscreen-images"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 126680.2,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 124 KiB",
            "urgency": "medium",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 63759,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 62 KiB",
            "urgency": "medium",
            "sourceAuditId": "unminified-javascript"
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss.",
            "estimatedSavingsBytes": 7551,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-optimized-images"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 6712,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-responsive-images"
          }
        ],
        "recommendations": [
          {
            "title": "Remove unused CSS",
            "urgency": "high",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 1.14 MB."
          },
          {
            "title": "Enable text compression",
            "urgency": "high",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat. Estimated byte savings: 1.06 MB."
          },
          {
            "title": "Minify CSS",
            "urgency": "high",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 871.06 KB."
          },
          {
            "title": "Remove unused JavaScript",
            "urgency": "high",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code. Estimated byte savings: 534.46 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 7742 ms."
          },
          {
            "title": "Lazy-load offscreen images",
            "urgency": "medium",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed. Estimated byte savings: 126.06 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1658443
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.58 MB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.58 MB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 34,
        "urgency": "high",
        "transferBytes": 1968666,
        "css": {
          "unusedBytes": 1195529,
          "ratio": 0.6072787359562262,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 547290,
          "duplicatedBytes": 0,
          "ratio": 0.27800043278037007,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "high",
            "estimatedSavingsBytes": 1195529,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          },
          {
            "area": "javascript",
            "title": "Remove unused JavaScript and feature bundles",
            "urgency": "high",
            "estimatedSavingsBytes": 547290,
            "strategy": "Drop unused packages and feature code, or move them behind route-level or interaction-triggered imports.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 38,
        "urgency": "high",
        "transferBytes": 1968666,
        "estimatedDeferrableBytes": 1871909,
        "renderBlockingMs": 7742,
        "breakdown": {
          "offscreenImageSavings": 129090,
          "unusedJavascriptSavings": 547290,
          "unusedCssSavings": 1195529
        },
        "candidates": [
          {
            "title": "Lazy-load offscreen images",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 129090,
            "strategy": "Load below-the-fold images only when they approach the viewport.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Defer non-critical JavaScript",
            "area": "javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 547290,
            "strategy": "Split bundles and load feature code on interaction or route transition.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1195529,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 7742,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy stylesheet from administracion.gob.es",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from administracion.gob.es",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.googletagmanager.com",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 145354,
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 34,
        "urgency": "medium",
        "providerCount": 1,
        "requestCount": 2,
        "transferBytes": 290018,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290018,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "medium",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "medium",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          }
        ]
      },
      "redundancy": {
        "score": 71,
        "urgency": "high",
        "transferBytes": 1968666,
        "estimatedRedundantBytes": 1742819,
        "redundancyRatio": 0.8852791687365963,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 1195529,
            "displayValue": "Est savings of 1,168 KiB"
          },
          {
            "auditId": "unused-javascript",
            "title": "Reduce unused JavaScript",
            "savingsBytes": 547290,
            "displayValue": "Est savings of 534 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "high",
            "estimatedSavingsBytes": 1195529,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce unused javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 547290,
            "auditId": "unused-javascript",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Enable and verify text compression",
            "urgency": "medium",
            "estimatedSavingsBytes": 1107520,
            "auditId": "uses-text-compression",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 46,
        "urgency": "high",
        "totalTransferBytes": 1968666,
        "heavyRequestCount": 5,
        "heavyBytes": 1670818,
        "heavyRatio": 0.8487056717594554,
        "heavyRequests": [
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "transferSize": 1177193,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "transferSize": 159823,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "transferSize": 145354,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-4YNNM3J1E0&cx=c&gtm=4e63p1",
            "transferSize": 144664,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/libs/jquery.mCustomScrollbar.css",
            "transferSize": 43784,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 1220977
          },
          {
            "resourceType": "script",
            "count": 2,
            "transferBytes": 290018
          },
          {
            "resourceType": "image",
            "count": 1,
            "transferBytes": 159823
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "administracion.gob.es",
            "count": 3,
            "transferBytes": 1380800
          },
          {
            "domain": "www.googletagmanager.com",
            "count": 2,
            "transferBytes": 290018
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Lazy-load offscreen images and media galleries",
            "urgency": "medium",
            "estimatedSavingsBytes": 129090,
            "strategy": "Load imagery only when it enters the viewport or when a user opens the relevant section.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Split JavaScript by route or interaction",
            "urgency": "high",
            "estimatedSavingsBytes": 547290,
            "strategy": "Move non-critical bundles behind route-level or event-driven imports so they are only fetched on demand.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy stylesheet asset from administracion.gob.es",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "strategy": "Split this stylesheet so component-specific CSS is delivered only when the component is rendered.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from www.googletagmanager.com",
            "urgency": "medium",
            "estimatedSavingsBytes": 145354,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0,
          "displayValue": "11.0 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 11.0 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": 0.03,
          "displayValue": "12.5 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- Current value: 12.5 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": 0,
          "displayValue": "Est savings of 534 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- Current value: Est savings of 534 KiB\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 1,168 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 1,168 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 7,740 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 7,740 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": 0,
          "displayValue": "Est savings of 1,082 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- Current value: Est savings of 1,082 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 124 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 124 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 7 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- Current value: Est savings of 7 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 126 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- Current value: Est savings of 126 KiB\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://administracion.gob.es/pag_Home/ca/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/asistencia-sanitaria/centros-atencion-sociosanitaria",
      "status": "ok",
      "finalUrl": "https://administracion.gob.es/pag_Home/ca/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/asistencia-sanitaria/centros-atencion-sociosanitaria",
      "performanceScore": 0.55,
      "bestPracticesScore": 0.79,
      "transferBytes": 1964420,
      "co2Grams": 0.7525327637880002,
      "greenWeb": {
        "page": {
          "hostname": "administracion.gob.es",
          "checked": true,
          "status": "not-green",
          "green": false,
          "hostedBy": null,
          "hostedByWebsite": null,
          "listedProvider": null,
          "partner": null,
          "modified": "2026-03-29T13:38:28.588564",
          "supportingDocuments": [],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/administracion.gob.es",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290023,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "not-green",
          "externalOriginCount": 1,
          "greenCount": 1,
          "notGreenCount": 1,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 70,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/buscador/buscadorsimple.htm|input|text|q|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "q",
            "formContext": "form|get|/buscador/buscadorsimple.htm",
            "hasLabel": false,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 70,
              "urgency": "high",
              "issues": [
                "Missing associated label",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add a programmatic label using <label>, aria-label, or aria-labelledby.",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "Missing associated label",
            "urgency": "high",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 25,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": true,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": false,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Centros de atención socio-sanitaria - Asistencia sanitaria - Ciudadanos - Tus derechos y obligaciones en la UE - Tu espacio europeo - Punto de Acceso General",
          "lang": "ca",
          "charset": "",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Conoce los centros de atención socio-sanitaria del Imserso y los Centros de Referencia Estatales.",
          "robots": "all",
          "canonical": "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/asistencia-sanitaria/centros-atencion-sociosanitaria",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 38,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 55,
          "tabletSmallTapTargets": 85,
          "fixedWidthOffenders": 4,
          "oversizedMedia": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 399,
            "viewportHeight": 864,
            "contentWidth": 399,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 4,
            "smallTapTargets": 55,
            "oversizedMedia": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 829,
            "viewportHeight": 1193,
            "contentWidth": 829,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 85,
            "oversizedMedia": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 55 small targets on mobile and 85 on tablet."
          },
          {
            "title": "Refactor fixed-width components",
            "urgency": "medium",
            "detail": "4 element(s) exceeded viewport width in tested layouts; use responsive component constraints."
          }
        ]
      },
      "securityLight": {
        "score": 33,
        "urgency": "medium",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": false,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 2,
          "externalScriptsWithoutIntegrity": 2,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "connection": "Keep-Alive",
            "content-encoding": "gzip",
            "content-type": "text/html;charset=UTF-8",
            "date": "Mon, 30 Mar 2026 00:17:48 GMT",
            "keep-alive": "timeout=15, max=500",
            "referrer-policy": "origin-when-cross-origin,strict-origin-when-cross-origin",
            "server": "Microsoft-IIS/5.0",
            "set-cookie": "VISITOR=returning; Path=/pag_Home/ca/Tu-espacio-europeo/derechos-obligaciones/ciudadanos; HttpOnly; Secure; SameSite=None\nTS01a8e1d0=01d9c3d3186e8e15b5b9edc17f17cb4b1f7777e3ed62999d88da62791f603954b0657e3ad206abe0e840a1f31af532847905d0382b90b7a84781f287b0f8ea376c270e95757560930f0447662c82f27874386d2204; Path=/; HttpOnly; Secure; SameSite=None\nTS01e460c5=01d9c3d31875eb4ee065abf109a5ef141663ea9e5662999d88da62791f603954b0657e3ad206abe0e840a1f31af532847905d0382b90b7a84781f287b0f8ea376c270e95758790e5f992ab8a462f1118463bf9b8565956db104bfe20987b3f54c98e7c3998; path=/pag_Home/ca/Tu-espacio-europeo/derechos-obligaciones/ciudadanos; HttpOnly; Secure; SameSite=None",
            "strict-transport-security": "max-age=63072000; preload",
            "transfer-encoding": "chunked",
            "vary": "Accept-Encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1;mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add a Content-Security-Policy header",
            "urgency": "high",
            "detail": "Add an appropriate CSP to reduce script injection and resource loading risk."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "2 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 30,
        "urgency": "medium",
        "origin": "https://administracion.gob.es",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://administracion.gob.es/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/favicon.ico",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 2197475.2,
        "checks": {
          "hasEffectiveTextCompression": false
        },
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "estimatedSavingsBytes": 1107520,
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "estimatedSavingsBytes": 891965,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "estimatedSavingsBytes": 126680.2,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "estimatedSavingsBytes": 63759,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "estimatedSavingsBytes": 7551,
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings."
          }
        ],
        "recommendations": [
          {
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.06 MB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
          },
          {
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
          },
          {
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 7.37 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 4049063.2,
        "totalEstimatedBlockingMs": 7778,
        "opportunities": [
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 1194677,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,167 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "uses-text-compression",
            "title": "Enable text compression",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat.",
            "estimatedSavingsBytes": 1107520,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,082 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-text-compression"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 891965,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 871 KiB",
            "urgency": "high",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unused-javascript",
            "title": "Remove unused JavaScript",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code.",
            "estimatedSavingsBytes": 530495,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 518 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-javascript"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 7778,
            "displayValue": "Est savings of 7,780 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 126680.2,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 124 KiB",
            "urgency": "medium",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "offscreen-images",
            "title": "Lazy-load offscreen images",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed.",
            "estimatedSavingsBytes": 119704,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 117 KiB",
            "urgency": "medium",
            "sourceAuditId": "offscreen-images"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 63759,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 62 KiB",
            "urgency": "medium",
            "sourceAuditId": "unminified-javascript"
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss.",
            "estimatedSavingsBytes": 7551,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-optimized-images"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 6712,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-responsive-images"
          }
        ],
        "recommendations": [
          {
            "title": "Remove unused CSS",
            "urgency": "high",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 1.14 MB."
          },
          {
            "title": "Enable text compression",
            "urgency": "high",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat. Estimated byte savings: 1.06 MB."
          },
          {
            "title": "Minify CSS",
            "urgency": "high",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 871.06 KB."
          },
          {
            "title": "Remove unused JavaScript",
            "urgency": "high",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code. Estimated byte savings: 518.06 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 7778 ms."
          },
          {
            "title": "Serve images in next-gen formats",
            "urgency": "medium",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 123.71 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 4,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 2,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "2 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1648218
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.57 MB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.57 MB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 36,
        "urgency": "high",
        "transferBytes": 1964420,
        "css": {
          "unusedBytes": 1194677,
          "ratio": 0.608157624133332,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 530495,
          "duplicatedBytes": 0,
          "ratio": 0.2700517201005895,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0.125,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "high",
            "estimatedSavingsBytes": 1194677,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          },
          {
            "area": "javascript",
            "title": "Remove unused JavaScript and feature bundles",
            "urgency": "high",
            "estimatedSavingsBytes": 530495,
            "strategy": "Drop unused packages and feature code, or move them behind route-level or interaction-triggered imports.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 37,
        "urgency": "high",
        "transferBytes": 1964420,
        "estimatedDeferrableBytes": 1844876,
        "renderBlockingMs": 7778,
        "breakdown": {
          "offscreenImageSavings": 119704,
          "unusedJavascriptSavings": 530495,
          "unusedCssSavings": 1194677
        },
        "candidates": [
          {
            "title": "Lazy-load offscreen images",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 119704,
            "strategy": "Load below-the-fold images only when they approach the viewport.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Defer non-critical JavaScript",
            "area": "javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 530495,
            "strategy": "Split bundles and load feature code on interaction or route transition.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1194677,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 7778,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy stylesheet from administracion.gob.es",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from administracion.gob.es",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.googletagmanager.com",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 145359,
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 34,
        "urgency": "medium",
        "providerCount": 1,
        "requestCount": 2,
        "transferBytes": 290023,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290023,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "medium",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "medium",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          }
        ]
      },
      "redundancy": {
        "score": 81,
        "urgency": "high",
        "transferBytes": 1964420,
        "estimatedRedundantBytes": 1725172,
        "redundancyRatio": 0.8782093442339215,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 1194677,
            "displayValue": "Est savings of 1,167 KiB"
          },
          {
            "auditId": "unused-javascript",
            "title": "Reduce unused JavaScript",
            "savingsBytes": 530495,
            "displayValue": "Est savings of 518 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "high",
            "estimatedSavingsBytes": 1194677,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce unused javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 530495,
            "auditId": "unused-javascript",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Enable and verify text compression",
            "urgency": "medium",
            "estimatedSavingsBytes": 1107520,
            "auditId": "uses-text-compression",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce DOM complexity and redundant markup",
            "urgency": "medium",
            "estimatedSavingsBytes": 0,
            "auditId": "dom-size",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 46,
        "urgency": "high",
        "totalTransferBytes": 1964420,
        "heavyRequestCount": 5,
        "heavyBytes": 1670823,
        "heavyRatio": 0.8505426538113031,
        "heavyRequests": [
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "transferSize": 1177193,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "transferSize": 159823,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "transferSize": 145359,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-4YNNM3J1E0&cx=c&gtm=4e63p1",
            "transferSize": 144664,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/libs/jquery.mCustomScrollbar.css",
            "transferSize": 43784,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 1220977
          },
          {
            "resourceType": "script",
            "count": 2,
            "transferBytes": 290023
          },
          {
            "resourceType": "image",
            "count": 1,
            "transferBytes": 159823
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "administracion.gob.es",
            "count": 3,
            "transferBytes": 1380800
          },
          {
            "domain": "www.googletagmanager.com",
            "count": 2,
            "transferBytes": 290023
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Lazy-load offscreen images and media galleries",
            "urgency": "medium",
            "estimatedSavingsBytes": 119704,
            "strategy": "Load imagery only when it enters the viewport or when a user opens the relevant section.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Split JavaScript by route or interaction",
            "urgency": "high",
            "estimatedSavingsBytes": 530495,
            "strategy": "Move non-critical bundles behind route-level or event-driven imports so they are only fetched on demand.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy stylesheet asset from administracion.gob.es",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "strategy": "Split this stylesheet so component-specific CSS is delivered only when the component is rendered.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from www.googletagmanager.com",
            "urgency": "medium",
            "estimatedSavingsBytes": 145359,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0,
          "displayValue": "11.0 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 11.0 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": 0.04,
          "displayValue": "11.9 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- Current value: 11.9 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": 0,
          "displayValue": "Est savings of 518 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- Current value: Est savings of 518 KiB\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 1,167 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 1,167 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 7,780 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 7,780 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": 0,
          "displayValue": "Est savings of 1,082 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- Current value: Est savings of 1,082 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 124 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 124 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 7 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- Current value: Est savings of 7 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 117 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- Current value: Est savings of 117 KiB\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "dom-size",
          "title": "Avoid an excessive DOM size",
          "description": "A large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).",
          "score": 0.5,
          "displayValue": "1,017 elements",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Avoid an excessive DOM size\n\n- Lighthouse audit: dom-size\n- Current value: 1,017 elements\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nA large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://administracion.gob.es/pag_Home/ca/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/asistencia-sanitaria/estancia-TSE",
      "status": "ok",
      "finalUrl": "https://administracion.gob.es/pag_Home/ca/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/asistencia-sanitaria/estancia-TSE",
      "performanceScore": 0.56,
      "bestPracticesScore": 0.79,
      "transferBytes": 1933166,
      "co2Grams": 0.7405599377124,
      "greenWeb": {
        "page": {
          "hostname": "administracion.gob.es",
          "checked": true,
          "status": "not-green",
          "green": false,
          "hostedBy": null,
          "hostedByWebsite": null,
          "listedProvider": null,
          "partner": null,
          "modified": "2026-03-29T13:38:28.588564",
          "supportingDocuments": [],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/administracion.gob.es",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290016,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "not-green",
          "externalOriginCount": 1,
          "greenCount": 1,
          "notGreenCount": 1,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 70,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/buscador/buscadorsimple.htm|input|text|q|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "q",
            "formContext": "form|get|/buscador/buscadorsimple.htm",
            "hasLabel": false,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 70,
              "urgency": "high",
              "issues": [
                "Missing associated label",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add a programmatic label using <label>, aria-label, or aria-labelledby.",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "Missing associated label",
            "urgency": "high",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 25,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": true,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": false,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Asistencia sanitaria durante la estancia en otro país de la UE y Tarjeta Sanitaria Europea (TSE) - Asistencia sanitaria - Ciudadanos - Tus derechos y obligaciones en la UE - Tu espacio europeo - Punto de Acceso General",
          "lang": "ca",
          "charset": "",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Derechos y obligaciones a la asistencia sanitaria durante la estancia en otro país de la UE. Qué es y cómo solicitar la tarjeta sanitaria europea.",
          "robots": "all",
          "canonical": "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/asistencia-sanitaria/estancia-TSE",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 38,
          "tabletSmallTapTargets": 69,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 399,
            "viewportHeight": 864,
            "contentWidth": 399,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 38,
            "oversizedMedia": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 829,
            "viewportHeight": 1193,
            "contentWidth": 829,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 69,
            "oversizedMedia": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 38 small targets on mobile and 69 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 31,
        "urgency": "medium",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": false,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "connection": "Keep-Alive",
            "content-encoding": "gzip",
            "content-type": "text/html;charset=UTF-8",
            "date": "Mon, 30 Mar 2026 00:18:10 GMT",
            "keep-alive": "timeout=15, max=500",
            "referrer-policy": "origin-when-cross-origin,strict-origin-when-cross-origin",
            "server": "Microsoft-IIS/5.0",
            "set-cookie": "VISITOR=returning; Path=/pag_Home/ca/Tu-espacio-europeo/derechos-obligaciones/ciudadanos; HttpOnly; Secure; SameSite=None\nTS01a8e1d0=01d9c3d3186e8e15b5b9edc17f17cb4b1f7777e3ed62999d88da62791f603954b0657e3ad206abe0e840a1f31af532847905d0382b90b7a84781f287b0f8ea376c270e95757560930f0447662c82f27874386d2204; Path=/; HttpOnly; Secure; SameSite=None\nTS01e460c5=01d9c3d31875eb4ee065abf109a5ef141663ea9e5662999d88da62791f603954b0657e3ad206abe0e840a1f31af532847905d0382b90b7a84781f287b0f8ea376c270e95758790e5f992ab8a462f1118463bf9b8565956db104bfe20987b3f54c98e7c3998; path=/pag_Home/ca/Tu-espacio-europeo/derechos-obligaciones/ciudadanos; HttpOnly; Secure; SameSite=None",
            "strict-transport-security": "max-age=63072000; preload",
            "transfer-encoding": "chunked",
            "vary": "Accept-Encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1;mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add a Content-Security-Policy header",
            "urgency": "high",
            "detail": "Add an appropriate CSP to reduce script injection and resource loading risk."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 30,
        "urgency": "medium",
        "origin": "https://administracion.gob.es",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://administracion.gob.es/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/favicon.ico",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 2197475.2,
        "checks": {
          "hasEffectiveTextCompression": false
        },
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "estimatedSavingsBytes": 1107520,
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "estimatedSavingsBytes": 891965,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "estimatedSavingsBytes": 126680.2,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "estimatedSavingsBytes": 63759,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "estimatedSavingsBytes": 7551,
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings."
          }
        ],
        "recommendations": [
          {
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.06 MB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
          },
          {
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
          },
          {
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 7.37 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 4050037.2,
        "totalEstimatedBlockingMs": 8062,
        "opportunities": [
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 1195718,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,168 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "uses-text-compression",
            "title": "Enable text compression",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat.",
            "estimatedSavingsBytes": 1107520,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,082 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-text-compression"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 891965,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 871 KiB",
            "urgency": "high",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unused-javascript",
            "title": "Remove unused JavaScript",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code.",
            "estimatedSavingsBytes": 547247,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 534 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-javascript"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 8062,
            "displayValue": "Est savings of 8,060 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 126680.2,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 124 KiB",
            "urgency": "medium",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "offscreen-images",
            "title": "Lazy-load offscreen images",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed.",
            "estimatedSavingsBytes": 102885,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 100 KiB",
            "urgency": "medium",
            "sourceAuditId": "offscreen-images"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 63759,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 62 KiB",
            "urgency": "medium",
            "sourceAuditId": "unminified-javascript"
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss.",
            "estimatedSavingsBytes": 7551,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-optimized-images"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 6712,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-responsive-images"
          }
        ],
        "recommendations": [
          {
            "title": "Remove unused CSS",
            "urgency": "high",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 1.14 MB."
          },
          {
            "title": "Enable text compression",
            "urgency": "high",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat. Estimated byte savings: 1.06 MB."
          },
          {
            "title": "Minify CSS",
            "urgency": "high",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 871.06 KB."
          },
          {
            "title": "Remove unused JavaScript",
            "urgency": "high",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code. Estimated byte savings: 534.42 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 8062 ms."
          },
          {
            "title": "Serve images in next-gen formats",
            "urgency": "medium",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 123.71 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1625249
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.55 MB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.55 MB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 34,
        "urgency": "high",
        "transferBytes": 1933166,
        "css": {
          "unusedBytes": 1195718,
          "ratio": 0.6185283622823906,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 547247,
          "duplicatedBytes": 0,
          "ratio": 0.2830832944506576,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "high",
            "estimatedSavingsBytes": 1195718,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          },
          {
            "area": "javascript",
            "title": "Remove unused JavaScript and feature bundles",
            "urgency": "high",
            "estimatedSavingsBytes": 547247,
            "strategy": "Drop unused packages and feature code, or move them behind route-level or interaction-triggered imports.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 38,
        "urgency": "high",
        "transferBytes": 1933166,
        "estimatedDeferrableBytes": 1845850,
        "renderBlockingMs": 8062,
        "breakdown": {
          "offscreenImageSavings": 102885,
          "unusedJavascriptSavings": 547247,
          "unusedCssSavings": 1195718
        },
        "candidates": [
          {
            "title": "Lazy-load offscreen images",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 102885,
            "strategy": "Load below-the-fold images only when they approach the viewport.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Defer non-critical JavaScript",
            "area": "javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 547247,
            "strategy": "Split bundles and load feature code on interaction or route transition.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1195718,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 8062,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy stylesheet from administracion.gob.es",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from administracion.gob.es",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.googletagmanager.com",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 145356,
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 34,
        "urgency": "medium",
        "providerCount": 1,
        "requestCount": 2,
        "transferBytes": 290016,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290016,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "medium",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "medium",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          }
        ]
      },
      "redundancy": {
        "score": 72,
        "urgency": "high",
        "transferBytes": 1933166,
        "estimatedRedundantBytes": 1742965,
        "redundancyRatio": 0.9016116567330483,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 1195718,
            "displayValue": "Est savings of 1,168 KiB"
          },
          {
            "auditId": "unused-javascript",
            "title": "Reduce unused JavaScript",
            "savingsBytes": 547247,
            "displayValue": "Est savings of 534 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "high",
            "estimatedSavingsBytes": 1195718,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce unused javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 547247,
            "auditId": "unused-javascript",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Enable and verify text compression",
            "urgency": "medium",
            "estimatedSavingsBytes": 1107520,
            "auditId": "uses-text-compression",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 46,
        "urgency": "high",
        "totalTransferBytes": 1933166,
        "heavyRequestCount": 5,
        "heavyBytes": 1670816,
        "heavyRatio": 0.8642899782015616,
        "heavyRequests": [
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "transferSize": 1177193,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "transferSize": 159823,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "transferSize": 145356,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-4YNNM3J1E0&cx=c&gtm=4e63p1h1",
            "transferSize": 144660,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/libs/jquery.mCustomScrollbar.css",
            "transferSize": 43784,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 1220977
          },
          {
            "resourceType": "script",
            "count": 2,
            "transferBytes": 290016
          },
          {
            "resourceType": "image",
            "count": 1,
            "transferBytes": 159823
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "administracion.gob.es",
            "count": 3,
            "transferBytes": 1380800
          },
          {
            "domain": "www.googletagmanager.com",
            "count": 2,
            "transferBytes": 290016
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Lazy-load offscreen images and media galleries",
            "urgency": "medium",
            "estimatedSavingsBytes": 102885,
            "strategy": "Load imagery only when it enters the viewport or when a user opens the relevant section.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Split JavaScript by route or interaction",
            "urgency": "high",
            "estimatedSavingsBytes": 547247,
            "strategy": "Move non-critical bundles behind route-level or event-driven imports so they are only fetched on demand.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy stylesheet asset from administracion.gob.es",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "strategy": "Split this stylesheet so component-specific CSS is delivered only when the component is rendered.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from www.googletagmanager.com",
            "urgency": "medium",
            "estimatedSavingsBytes": 145356,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0,
          "displayValue": "10.9 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 10.9 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": 0.06,
          "displayValue": "11.0 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- Current value: 11.0 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": 0,
          "displayValue": "Est savings of 534 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- Current value: Est savings of 534 KiB\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 1,168 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 1,168 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 8,060 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 8,060 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": 0,
          "displayValue": "Est savings of 1,082 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- Current value: Est savings of 1,082 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 124 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 124 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 7 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- Current value: Est savings of 7 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 100 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- Current value: Est savings of 100 KiB\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://administracion.gob.es/pag_Home/ca/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/asistencia-sanitaria/numeros-urgencia",
      "status": "ok",
      "finalUrl": "https://administracion.gob.es/pag_Home/ca/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/asistencia-sanitaria/numeros-urgencia",
      "performanceScore": 0.55,
      "bestPracticesScore": 0.79,
      "transferBytes": 2223230,
      "co2Grams": 0.851678060922,
      "greenWeb": {
        "page": {
          "hostname": "administracion.gob.es",
          "checked": true,
          "status": "not-green",
          "green": false,
          "hostedBy": null,
          "hostedByWebsite": null,
          "listedProvider": null,
          "partner": null,
          "modified": "2026-03-29T13:38:28.588564",
          "supportingDocuments": [],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/administracion.gob.es",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290023,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "not-green",
          "externalOriginCount": 1,
          "greenCount": 1,
          "notGreenCount": 1,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 70,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/buscador/buscadorsimple.htm|input|text|q|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "q",
            "formContext": "form|get|/buscador/buscadorsimple.htm",
            "hasLabel": false,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 70,
              "urgency": "high",
              "issues": [
                "Missing associated label",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add a programmatic label using <label>, aria-label, or aria-labelledby.",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "Missing associated label",
            "urgency": "high",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 25,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": true,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": false,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Servicios prestados a través de números de urgencia nacionales (112) - Asistencia sanitaria - Ciudadanos - Tus derechos y obligaciones en la UE - Tu espacio europeo - Punto de Acceso General",
          "lang": "ca",
          "charset": "",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Conoce el número de emergencias, acceso y características del servicio.",
          "robots": "all",
          "canonical": "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/asistencia-sanitaria/numeros-urgencia",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 47,
          "tabletSmallTapTargets": 81,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 399,
            "viewportHeight": 864,
            "contentWidth": 399,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 47,
            "oversizedMedia": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 829,
            "viewportHeight": 1193,
            "contentWidth": 829,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 81,
            "oversizedMedia": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 47 small targets on mobile and 81 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 31,
        "urgency": "medium",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": false,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "connection": "Keep-Alive",
            "content-encoding": "gzip",
            "content-type": "text/html;charset=UTF-8",
            "date": "Mon, 30 Mar 2026 00:18:33 GMT",
            "keep-alive": "timeout=15, max=500",
            "referrer-policy": "origin-when-cross-origin,strict-origin-when-cross-origin",
            "server": "Microsoft-IIS/5.0",
            "set-cookie": "VISITOR=returning; Path=/pag_Home/ca/Tu-espacio-europeo/derechos-obligaciones/ciudadanos; HttpOnly; Secure; SameSite=None\nTS01a8e1d0=01d9c3d3186e8e15b5b9edc17f17cb4b1f7777e3ed62999d88da62791f603954b0657e3ad206abe0e840a1f31af532847905d0382b90b7a84781f287b0f8ea376c270e95757560930f0447662c82f27874386d2204; Path=/; HttpOnly; Secure; SameSite=None\nTS01e460c5=01d9c3d31875eb4ee065abf109a5ef141663ea9e5662999d88da62791f603954b0657e3ad206abe0e840a1f31af532847905d0382b90b7a84781f287b0f8ea376c270e95758790e5f992ab8a462f1118463bf9b8565956db104bfe20987b3f54c98e7c3998; path=/pag_Home/ca/Tu-espacio-europeo/derechos-obligaciones/ciudadanos; HttpOnly; Secure; SameSite=None",
            "strict-transport-security": "max-age=63072000; preload",
            "transfer-encoding": "chunked",
            "vary": "Accept-Encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1;mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add a Content-Security-Policy header",
            "urgency": "high",
            "detail": "Add an appropriate CSP to reduce script injection and resource loading risk."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 30,
        "urgency": "medium",
        "origin": "https://administracion.gob.es",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://administracion.gob.es/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/favicon.ico",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 2383117.2,
        "checks": {
          "hasEffectiveTextCompression": false
        },
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "estimatedSavingsBytes": 1293162,
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "estimatedSavingsBytes": 891965,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "estimatedSavingsBytes": 126680.2,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "estimatedSavingsBytes": 63759,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "estimatedSavingsBytes": 7551,
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings."
          }
        ],
        "recommendations": [
          {
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.23 MB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
          },
          {
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
          },
          {
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 7.37 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 4261740.2,
        "totalEstimatedBlockingMs": 8919,
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable text compression",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat.",
            "estimatedSavingsBytes": 1293162,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,263 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-text-compression"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 1195529,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,168 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 891965,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 871 KiB",
            "urgency": "high",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unused-javascript",
            "title": "Remove unused JavaScript",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code.",
            "estimatedSavingsBytes": 547292,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 534 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-javascript"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 8919,
            "displayValue": "Est savings of 8,920 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "offscreen-images",
            "title": "Lazy-load offscreen images",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed.",
            "estimatedSavingsBytes": 129090,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 126 KiB",
            "urgency": "medium",
            "sourceAuditId": "offscreen-images"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 126680.2,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 124 KiB",
            "urgency": "medium",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 63759,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 62 KiB",
            "urgency": "medium",
            "sourceAuditId": "unminified-javascript"
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss.",
            "estimatedSavingsBytes": 7551,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-optimized-images"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 6712,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-responsive-images"
          }
        ],
        "recommendations": [
          {
            "title": "Enable text compression",
            "urgency": "high",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat. Estimated byte savings: 1.23 MB."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "high",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 1.14 MB."
          },
          {
            "title": "Minify CSS",
            "urgency": "high",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 871.06 KB."
          },
          {
            "title": "Remove unused JavaScript",
            "urgency": "high",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code. Estimated byte savings: 534.46 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 8919 ms."
          },
          {
            "title": "Lazy-load offscreen images",
            "urgency": "medium",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed. Estimated byte savings: 126.06 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1912959
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.82 MB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.82 MB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 30,
        "urgency": "high",
        "transferBytes": 2223230,
        "css": {
          "unusedBytes": 1195529,
          "ratio": 0.5377441830130036,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 547292,
          "duplicatedBytes": 0,
          "ratio": 0.24616976201292715,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "high",
            "estimatedSavingsBytes": 1195529,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          },
          {
            "area": "javascript",
            "title": "Remove unused JavaScript and feature bundles",
            "urgency": "high",
            "estimatedSavingsBytes": 547292,
            "strategy": "Drop unused packages and feature code, or move them behind route-level or interaction-triggered imports.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 35,
        "urgency": "high",
        "transferBytes": 2223230,
        "estimatedDeferrableBytes": 1871911,
        "renderBlockingMs": 8919,
        "breakdown": {
          "offscreenImageSavings": 129090,
          "unusedJavascriptSavings": 547292,
          "unusedCssSavings": 1195529
        },
        "candidates": [
          {
            "title": "Lazy-load offscreen images",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 129090,
            "strategy": "Load below-the-fold images only when they approach the viewport.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Defer non-critical JavaScript",
            "area": "javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 547292,
            "strategy": "Split bundles and load feature code on interaction or route transition.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1195529,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 8919,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy stylesheet from administracion.gob.es",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from administracion.gob.es",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 254411,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from administracion.gob.es",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.googletagmanager.com",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 145359,
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 34,
        "urgency": "medium",
        "providerCount": 1,
        "requestCount": 2,
        "transferBytes": 290023,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290023,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "medium",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "medium",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          }
        ]
      },
      "redundancy": {
        "score": 68,
        "urgency": "high",
        "transferBytes": 2223230,
        "estimatedRedundantBytes": 1742821,
        "redundancyRatio": 0.7839139450259307,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 1195529,
            "displayValue": "Est savings of 1,168 KiB"
          },
          {
            "auditId": "unused-javascript",
            "title": "Reduce unused JavaScript",
            "savingsBytes": 547292,
            "displayValue": "Est savings of 534 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "high",
            "estimatedSavingsBytes": 1195529,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce unused javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 547292,
            "auditId": "unused-javascript",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Enable and verify text compression",
            "urgency": "medium",
            "estimatedSavingsBytes": 1293162,
            "auditId": "uses-text-compression",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 47,
        "urgency": "high",
        "totalTransferBytes": 2223230,
        "heavyRequestCount": 6,
        "heavyBytes": 1925234,
        "heavyRatio": 0.8659625859672638,
        "heavyRequests": [
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "transferSize": 1177193,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "transferSize": 254411,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "transferSize": 159823,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "transferSize": 145359,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-4YNNM3J1E0&cx=c&gtm=4e63p1",
            "transferSize": 144664,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/libs/jquery.mCustomScrollbar.css",
            "transferSize": 43784,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 1220977
          },
          {
            "resourceType": "script",
            "count": 3,
            "transferBytes": 544434
          },
          {
            "resourceType": "image",
            "count": 1,
            "transferBytes": 159823
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "administracion.gob.es",
            "count": 4,
            "transferBytes": 1635211
          },
          {
            "domain": "www.googletagmanager.com",
            "count": 2,
            "transferBytes": 290023
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Lazy-load offscreen images and media galleries",
            "urgency": "medium",
            "estimatedSavingsBytes": 129090,
            "strategy": "Load imagery only when it enters the viewport or when a user opens the relevant section.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Split JavaScript by route or interaction",
            "urgency": "high",
            "estimatedSavingsBytes": 547292,
            "strategy": "Move non-critical bundles behind route-level or event-driven imports so they are only fetched on demand.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy stylesheet asset from administracion.gob.es",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "strategy": "Split this stylesheet so component-specific CSS is delivered only when the component is rendered.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 254411,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0,
          "displayValue": "12.3 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 12.3 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": 0.04,
          "displayValue": "11.7 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- Current value: 11.7 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": 0,
          "displayValue": "Est savings of 534 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- Current value: Est savings of 534 KiB\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 1,168 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 1,168 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 8,920 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 8,920 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": 0,
          "displayValue": "Est savings of 1,263 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- Current value: Est savings of 1,263 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 124 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 124 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 7 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- Current value: Est savings of 7 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 126 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- Current value: Est savings of 126 KiB\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://administracion.gob.es/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/asistencia-sanitaria/centros-atencion-sociosanitaria",
      "status": "ok",
      "finalUrl": "https://administracion.gob.es/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/asistencia-sanitaria/centros-atencion-sociosanitaria",
      "performanceScore": 0.55,
      "bestPracticesScore": 0.79,
      "transferBytes": 1963774,
      "co2Grams": 0.7522852932036,
      "greenWeb": {
        "page": {
          "hostname": "administracion.gob.es",
          "checked": true,
          "status": "not-green",
          "green": false,
          "hostedBy": null,
          "hostedByWebsite": null,
          "listedProvider": null,
          "partner": null,
          "modified": "2026-03-29T13:38:28.588564",
          "supportingDocuments": [],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/administracion.gob.es",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290023,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "not-green",
          "externalOriginCount": 1,
          "greenCount": 1,
          "notGreenCount": 1,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 70,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/buscador/buscadorsimple.htm|input|text|q|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "q",
            "formContext": "form|get|/buscador/buscadorsimple.htm",
            "hasLabel": false,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 70,
              "urgency": "high",
              "issues": [
                "Missing associated label",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add a programmatic label using <label>, aria-label, or aria-labelledby.",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "Missing associated label",
            "urgency": "high",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 35,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": false,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Health and social care institutions - Healthcare - Citizens - Your rights and obligations in the EU - Tu espacio europeo - Punto de Acceso General",
          "lang": "en",
          "charset": "",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Information on the health and social care centres of the Institute for Older People and Social Services (IMSERSO) and its State Reference Centres",
          "robots": "all",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 36,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 58,
          "tabletSmallTapTargets": 83,
          "fixedWidthOffenders": 3,
          "oversizedMedia": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 399,
            "viewportHeight": 864,
            "contentWidth": 399,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 3,
            "smallTapTargets": 58,
            "oversizedMedia": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 829,
            "viewportHeight": 1193,
            "contentWidth": 829,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 83,
            "oversizedMedia": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 58 small targets on mobile and 83 on tablet."
          },
          {
            "title": "Refactor fixed-width components",
            "urgency": "medium",
            "detail": "3 element(s) exceeded viewport width in tested layouts; use responsive component constraints."
          }
        ]
      },
      "securityLight": {
        "score": 33,
        "urgency": "medium",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": false,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 2,
          "externalScriptsWithoutIntegrity": 2,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "connection": "Keep-Alive",
            "content-encoding": "gzip",
            "content-type": "text/html;charset=UTF-8",
            "date": "Mon, 30 Mar 2026 00:19:00 GMT",
            "keep-alive": "timeout=15, max=500",
            "referrer-policy": "origin-when-cross-origin,strict-origin-when-cross-origin",
            "server": "Microsoft-IIS/5.0",
            "set-cookie": "VISITOR=returning; Path=/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/ciudadanos; HttpOnly; Secure; SameSite=None\nTS01a8e1d0=01d9c3d3186e8e15b5b9edc17f17cb4b1f7777e3ed62999d88da62791f603954b0657e3ad206abe0e840a1f31af532847905d0382b90b7a84781f287b0f8ea376c270e95757560930f0447662c82f27874386d2204; Path=/; HttpOnly; Secure; SameSite=None\nTS01cc21ed=01d9c3d31875eb4ee065abf109a5ef141663ea9e5662999d88da62791f603954b0657e3ad206abe0e840a1f31af532847905d0382b90b7a84781f287b0f8ea376c270e95758790e5f992ab8a462f1118463bf9b8565956db104bfe20987b3f54c98e7c3998; path=/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/ciudadanos; HttpOnly; Secure; SameSite=None",
            "strict-transport-security": "max-age=63072000; preload",
            "transfer-encoding": "chunked",
            "vary": "Accept-Encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1;mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add a Content-Security-Policy header",
            "urgency": "high",
            "detail": "Add an appropriate CSP to reduce script injection and resource loading risk."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "2 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 30,
        "urgency": "medium",
        "origin": "https://administracion.gob.es",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://administracion.gob.es/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/favicon.ico",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 2197475.2,
        "checks": {
          "hasEffectiveTextCompression": false
        },
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "estimatedSavingsBytes": 1107520,
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "estimatedSavingsBytes": 891965,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "estimatedSavingsBytes": 126680.2,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "estimatedSavingsBytes": 63759,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "estimatedSavingsBytes": 7551,
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings."
          }
        ],
        "recommendations": [
          {
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.06 MB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
          },
          {
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
          },
          {
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 7.37 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 4049031.2,
        "totalEstimatedBlockingMs": 7757,
        "opportunities": [
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 1194645,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,167 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "uses-text-compression",
            "title": "Enable text compression",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat.",
            "estimatedSavingsBytes": 1107520,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,082 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-text-compression"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 891965,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 871 KiB",
            "urgency": "high",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unused-javascript",
            "title": "Remove unused JavaScript",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code.",
            "estimatedSavingsBytes": 530495,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 518 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-javascript"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 7757,
            "displayValue": "Est savings of 7,760 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 126680.2,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 124 KiB",
            "urgency": "medium",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "offscreen-images",
            "title": "Lazy-load offscreen images",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed.",
            "estimatedSavingsBytes": 119704,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 117 KiB",
            "urgency": "medium",
            "sourceAuditId": "offscreen-images"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 63759,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 62 KiB",
            "urgency": "medium",
            "sourceAuditId": "unminified-javascript"
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss.",
            "estimatedSavingsBytes": 7551,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-optimized-images"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 6712,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-responsive-images"
          }
        ],
        "recommendations": [
          {
            "title": "Remove unused CSS",
            "urgency": "high",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 1.14 MB."
          },
          {
            "title": "Enable text compression",
            "urgency": "high",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat. Estimated byte savings: 1.06 MB."
          },
          {
            "title": "Minify CSS",
            "urgency": "high",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 871.06 KB."
          },
          {
            "title": "Remove unused JavaScript",
            "urgency": "high",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code. Estimated byte savings: 518.06 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 7757 ms."
          },
          {
            "title": "Serve images in next-gen formats",
            "urgency": "medium",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 123.71 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 4,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 2,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "2 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1648286
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.57 MB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.57 MB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 36,
        "urgency": "high",
        "transferBytes": 1963774,
        "css": {
          "unusedBytes": 1194645,
          "ratio": 0.6083413875527428,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 530495,
          "duplicatedBytes": 0,
          "ratio": 0.2701405558888141,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0.125,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "high",
            "estimatedSavingsBytes": 1194645,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          },
          {
            "area": "javascript",
            "title": "Remove unused JavaScript and feature bundles",
            "urgency": "high",
            "estimatedSavingsBytes": 530495,
            "strategy": "Drop unused packages and feature code, or move them behind route-level or interaction-triggered imports.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 37,
        "urgency": "high",
        "transferBytes": 1963774,
        "estimatedDeferrableBytes": 1844844,
        "renderBlockingMs": 7757,
        "breakdown": {
          "offscreenImageSavings": 119704,
          "unusedJavascriptSavings": 530495,
          "unusedCssSavings": 1194645
        },
        "candidates": [
          {
            "title": "Lazy-load offscreen images",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 119704,
            "strategy": "Load below-the-fold images only when they approach the viewport.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Defer non-critical JavaScript",
            "area": "javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 530495,
            "strategy": "Split bundles and load feature code on interaction or route transition.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1194645,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 7757,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy stylesheet from administracion.gob.es",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from administracion.gob.es",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 159817,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.googletagmanager.com",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 145359,
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 34,
        "urgency": "medium",
        "providerCount": 1,
        "requestCount": 2,
        "transferBytes": 290023,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290023,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "medium",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "medium",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          }
        ]
      },
      "redundancy": {
        "score": 81,
        "urgency": "high",
        "transferBytes": 1963774,
        "estimatedRedundantBytes": 1725140,
        "redundancyRatio": 0.878481943441557,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 1194645,
            "displayValue": "Est savings of 1,167 KiB"
          },
          {
            "auditId": "unused-javascript",
            "title": "Reduce unused JavaScript",
            "savingsBytes": 530495,
            "displayValue": "Est savings of 518 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "high",
            "estimatedSavingsBytes": 1194645,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce unused javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 530495,
            "auditId": "unused-javascript",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Enable and verify text compression",
            "urgency": "medium",
            "estimatedSavingsBytes": 1107520,
            "auditId": "uses-text-compression",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce DOM complexity and redundant markup",
            "urgency": "medium",
            "estimatedSavingsBytes": 0,
            "auditId": "dom-size",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 46,
        "urgency": "high",
        "totalTransferBytes": 1963774,
        "heavyRequestCount": 5,
        "heavyBytes": 1670817,
        "heavyRatio": 0.8508193916407896,
        "heavyRequests": [
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "transferSize": 1177193,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "transferSize": 159817,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "transferSize": 145359,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-4YNNM3J1E0&cx=c&gtm=4e63p1",
            "transferSize": 144664,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/libs/jquery.mCustomScrollbar.css",
            "transferSize": 43784,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 1220977
          },
          {
            "resourceType": "script",
            "count": 2,
            "transferBytes": 290023
          },
          {
            "resourceType": "image",
            "count": 1,
            "transferBytes": 159817
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "administracion.gob.es",
            "count": 3,
            "transferBytes": 1380794
          },
          {
            "domain": "www.googletagmanager.com",
            "count": 2,
            "transferBytes": 290023
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Lazy-load offscreen images and media galleries",
            "urgency": "medium",
            "estimatedSavingsBytes": 119704,
            "strategy": "Load imagery only when it enters the viewport or when a user opens the relevant section.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Split JavaScript by route or interaction",
            "urgency": "high",
            "estimatedSavingsBytes": 530495,
            "strategy": "Move non-critical bundles behind route-level or event-driven imports so they are only fetched on demand.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy stylesheet asset from administracion.gob.es",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "strategy": "Split this stylesheet so component-specific CSS is delivered only when the component is rendered.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 159817,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from www.googletagmanager.com",
            "urgency": "medium",
            "estimatedSavingsBytes": 145359,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0,
          "displayValue": "11.0 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 11.0 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": 0,
          "displayValue": "15.7 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- Current value: 15.7 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": 0,
          "displayValue": "Est savings of 518 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- Current value: Est savings of 518 KiB\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 1,167 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 1,167 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 7,760 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 7,760 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": 0,
          "displayValue": "Est savings of 1,082 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- Current value: Est savings of 1,082 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 124 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 124 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 7 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- Current value: Est savings of 7 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 117 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- Current value: Est savings of 117 KiB\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "dom-size",
          "title": "Avoid an excessive DOM size",
          "description": "A large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).",
          "score": 0.5,
          "displayValue": "960 elements",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Avoid an excessive DOM size\n\n- Lighthouse audit: dom-size\n- Current value: 960 elements\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nA large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://administracion.gob.es/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/asistencia-sanitaria/estancia-TSE",
      "status": "ok",
      "finalUrl": "https://administracion.gob.es/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/asistencia-sanitaria/estancia-TSE",
      "performanceScore": 0.56,
      "bestPracticesScore": 0.79,
      "transferBytes": 1933356,
      "co2Grams": 0.7406327231784001,
      "greenWeb": {
        "page": {
          "hostname": "administracion.gob.es",
          "checked": true,
          "status": "not-green",
          "green": false,
          "hostedBy": null,
          "hostedByWebsite": null,
          "listedProvider": null,
          "partner": null,
          "modified": "2026-03-29T13:38:28.588564",
          "supportingDocuments": [],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/administracion.gob.es",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290227,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "not-green",
          "externalOriginCount": 1,
          "greenCount": 1,
          "notGreenCount": 1,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 70,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/buscador/buscadorsimple.htm|input|text|q|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "q",
            "formContext": "form|get|/buscador/buscadorsimple.htm",
            "hasLabel": false,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 70,
              "urgency": "high",
              "issues": [
                "Missing associated label",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add a programmatic label using <label>, aria-label, or aria-labelledby.",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "Missing associated label",
            "urgency": "high",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 35,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": false,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Healthcare during a stay in another EU Member State and the European Health Insurance Card (EHIC) - Healthcare - Citizens - Your rights and obligations in the EU - Tu espacio europeo - Punto de Acceso General",
          "lang": "en",
          "charset": "",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Healthcare rights and obligations during a stay in another EU Member State What is the EHIC, and how do I apply for it?",
          "robots": "all",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 32,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 40,
          "tabletSmallTapTargets": 66,
          "fixedWidthOffenders": 1,
          "oversizedMedia": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 399,
            "viewportHeight": 864,
            "contentWidth": 399,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 1,
            "smallTapTargets": 40,
            "oversizedMedia": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 829,
            "viewportHeight": 1193,
            "contentWidth": 829,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 66,
            "oversizedMedia": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 40 small targets on mobile and 66 on tablet."
          },
          {
            "title": "Refactor fixed-width components",
            "urgency": "medium",
            "detail": "1 element(s) exceeded viewport width in tested layouts; use responsive component constraints."
          }
        ]
      },
      "securityLight": {
        "score": 31,
        "urgency": "medium",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": false,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "connection": "Keep-Alive",
            "content-encoding": "gzip",
            "content-length": "15027",
            "content-type": "text/html;charset=UTF-8",
            "date": "Mon, 30 Mar 2026 00:19:21 GMT",
            "keep-alive": "timeout=15, max=500",
            "referrer-policy": "origin-when-cross-origin,strict-origin-when-cross-origin",
            "server": "Microsoft-IIS/5.0",
            "set-cookie": "VISITOR=returning; Path=/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/ciudadanos; HttpOnly; Secure; SameSite=None\nTS01a8e1d0=01d9c3d3186e8e15b5b9edc17f17cb4b1f7777e3ed62999d88da62791f603954b0657e3ad206abe0e840a1f31af532847905d0382b90b7a84781f287b0f8ea376c270e95757560930f0447662c82f27874386d2204; Path=/; HttpOnly; Secure; SameSite=None\nTS01cc21ed=01d9c3d31875eb4ee065abf109a5ef141663ea9e5662999d88da62791f603954b0657e3ad206abe0e840a1f31af532847905d0382b90b7a84781f287b0f8ea376c270e95758790e5f992ab8a462f1118463bf9b8565956db104bfe20987b3f54c98e7c3998; path=/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/ciudadanos; HttpOnly; Secure; SameSite=None",
            "strict-transport-security": "max-age=63072000; preload",
            "vary": "Accept-Encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1;mode=block",
            "traceresponse": "00-4b9b151f04de4a6d22d1fe50eca46b02-4a8c7ff72d4bdd8c-01",
            "x-dt-tracestate": "acd5d8fe-344161ca@dt"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add a Content-Security-Policy header",
            "urgency": "high",
            "detail": "Add an appropriate CSP to reduce script injection and resource loading risk."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 30,
        "urgency": "medium",
        "origin": "https://administracion.gob.es",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://administracion.gob.es/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/favicon.ico",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 2197475.2,
        "checks": {
          "hasEffectiveTextCompression": false
        },
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "estimatedSavingsBytes": 1107520,
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "estimatedSavingsBytes": 891965,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "estimatedSavingsBytes": 126680.2,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "estimatedSavingsBytes": 63759,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "estimatedSavingsBytes": 7551,
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings."
          }
        ],
        "recommendations": [
          {
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.06 MB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
          },
          {
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
          },
          {
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 7.37 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 4050177.2,
        "totalEstimatedBlockingMs": 8063,
        "opportunities": [
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 1195718,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,168 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "uses-text-compression",
            "title": "Enable text compression",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat.",
            "estimatedSavingsBytes": 1107520,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,082 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-text-compression"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 891965,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 871 KiB",
            "urgency": "high",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unused-javascript",
            "title": "Remove unused JavaScript",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code.",
            "estimatedSavingsBytes": 547387,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 535 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-javascript"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 8063,
            "displayValue": "Est savings of 8,060 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 126680.2,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 124 KiB",
            "urgency": "medium",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "offscreen-images",
            "title": "Lazy-load offscreen images",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed.",
            "estimatedSavingsBytes": 102885,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 100 KiB",
            "urgency": "medium",
            "sourceAuditId": "offscreen-images"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 63759,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 62 KiB",
            "urgency": "medium",
            "sourceAuditId": "unminified-javascript"
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss.",
            "estimatedSavingsBytes": 7551,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-optimized-images"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 6712,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-responsive-images"
          }
        ],
        "recommendations": [
          {
            "title": "Remove unused CSS",
            "urgency": "high",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 1.14 MB."
          },
          {
            "title": "Enable text compression",
            "urgency": "high",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat. Estimated byte savings: 1.06 MB."
          },
          {
            "title": "Minify CSS",
            "urgency": "high",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 871.06 KB."
          },
          {
            "title": "Remove unused JavaScript",
            "urgency": "high",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code. Estimated byte savings: 534.56 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 8063 ms."
          },
          {
            "title": "Serve images in next-gen formats",
            "urgency": "medium",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 123.71 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1625262
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.55 MB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.55 MB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 34,
        "urgency": "high",
        "transferBytes": 1933356,
        "css": {
          "unusedBytes": 1195718,
          "ratio": 0.6184675765870331,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 547387,
          "duplicatedBytes": 0,
          "ratio": 0.2831278874661469,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "high",
            "estimatedSavingsBytes": 1195718,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          },
          {
            "area": "javascript",
            "title": "Remove unused JavaScript and feature bundles",
            "urgency": "high",
            "estimatedSavingsBytes": 547387,
            "strategy": "Drop unused packages and feature code, or move them behind route-level or interaction-triggered imports.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 38,
        "urgency": "high",
        "transferBytes": 1933356,
        "estimatedDeferrableBytes": 1845990,
        "renderBlockingMs": 8063,
        "breakdown": {
          "offscreenImageSavings": 102885,
          "unusedJavascriptSavings": 547387,
          "unusedCssSavings": 1195718
        },
        "candidates": [
          {
            "title": "Lazy-load offscreen images",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 102885,
            "strategy": "Load below-the-fold images only when they approach the viewport.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Defer non-critical JavaScript",
            "area": "javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 547387,
            "strategy": "Split bundles and load feature code on interaction or route transition.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1195718,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 8063,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy stylesheet from administracion.gob.es",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from administracion.gob.es",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.googletagmanager.com",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 145466,
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 34,
        "urgency": "medium",
        "providerCount": 1,
        "requestCount": 2,
        "transferBytes": 290227,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290227,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "medium",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "medium",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          }
        ]
      },
      "redundancy": {
        "score": 72,
        "urgency": "high",
        "transferBytes": 1933356,
        "estimatedRedundantBytes": 1743105,
        "redundancyRatio": 0.90159546405318,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 1195718,
            "displayValue": "Est savings of 1,168 KiB"
          },
          {
            "auditId": "unused-javascript",
            "title": "Reduce unused JavaScript",
            "savingsBytes": 547387,
            "displayValue": "Est savings of 535 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "high",
            "estimatedSavingsBytes": 1195718,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce unused javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 547387,
            "auditId": "unused-javascript",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Enable and verify text compression",
            "urgency": "medium",
            "estimatedSavingsBytes": 1107520,
            "auditId": "uses-text-compression",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 46,
        "urgency": "high",
        "totalTransferBytes": 1933356,
        "heavyRequestCount": 5,
        "heavyBytes": 1671027,
        "heavyRatio": 0.8643141770062006,
        "heavyRequests": [
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "transferSize": 1177193,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "transferSize": 159823,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "transferSize": 145466,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-4YNNM3J1E0&cx=c&gtm=4e63q0h2",
            "transferSize": 144761,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/libs/jquery.mCustomScrollbar.css",
            "transferSize": 43784,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 1220977
          },
          {
            "resourceType": "script",
            "count": 2,
            "transferBytes": 290227
          },
          {
            "resourceType": "image",
            "count": 1,
            "transferBytes": 159823
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "administracion.gob.es",
            "count": 3,
            "transferBytes": 1380800
          },
          {
            "domain": "www.googletagmanager.com",
            "count": 2,
            "transferBytes": 290227
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Lazy-load offscreen images and media galleries",
            "urgency": "medium",
            "estimatedSavingsBytes": 102885,
            "strategy": "Load imagery only when it enters the viewport or when a user opens the relevant section.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Split JavaScript by route or interaction",
            "urgency": "high",
            "estimatedSavingsBytes": 547387,
            "strategy": "Move non-critical bundles behind route-level or event-driven imports so they are only fetched on demand.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy stylesheet asset from administracion.gob.es",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "strategy": "Split this stylesheet so component-specific CSS is delivered only when the component is rendered.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from www.googletagmanager.com",
            "urgency": "medium",
            "estimatedSavingsBytes": 145466,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0,
          "displayValue": "10.7 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 10.7 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": 0.1,
          "displayValue": "9.8 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- Current value: 9.8 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": 0,
          "displayValue": "Est savings of 535 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- Current value: Est savings of 535 KiB\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 1,168 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 1,168 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 8,060 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 8,060 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": 0,
          "displayValue": "Est savings of 1,082 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- Current value: Est savings of 1,082 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 124 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 124 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 7 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- Current value: Est savings of 7 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 100 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- Current value: Est savings of 100 KiB\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://administracion.gob.es/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/asistencia-sanitaria/numeros-urgencia",
      "status": "ok",
      "finalUrl": "https://administracion.gob.es/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/asistencia-sanitaria/numeros-urgencia",
      "performanceScore": 0.55,
      "bestPracticesScore": 0.79,
      "transferBytes": 2222758,
      "co2Grams": 0.8514972465012001,
      "greenWeb": {
        "page": {
          "hostname": "administracion.gob.es",
          "checked": true,
          "status": "not-green",
          "green": false,
          "hostedBy": null,
          "hostedByWebsite": null,
          "listedProvider": null,
          "partner": null,
          "modified": "2026-03-29T13:38:28.588564",
          "supportingDocuments": [],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/administracion.gob.es",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290023,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "not-green",
          "externalOriginCount": 1,
          "greenCount": 1,
          "notGreenCount": 1,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 70,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/buscador/buscadorsimple.htm|input|text|q|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "q",
            "formContext": "form|get|/buscador/buscadorsimple.htm",
            "hasLabel": false,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 70,
              "urgency": "high",
              "issues": [
                "Missing associated label",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add a programmatic label using <label>, aria-label, or aria-labelledby.",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "Missing associated label",
            "urgency": "high",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 35,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": false,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Services provided through national emergency numbers (112) - Healthcare - Citizens - Your rights and obligations in the EU - Tu espacio europeo - Punto de Acceso General",
          "lang": "en",
          "charset": "",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Information on the emergency number, accessing and features of the service.",
          "robots": "all",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 32,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 50,
          "tabletSmallTapTargets": 78,
          "fixedWidthOffenders": 1,
          "oversizedMedia": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 399,
            "viewportHeight": 864,
            "contentWidth": 399,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 1,
            "smallTapTargets": 50,
            "oversizedMedia": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 829,
            "viewportHeight": 1193,
            "contentWidth": 829,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 78,
            "oversizedMedia": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 50 small targets on mobile and 78 on tablet."
          },
          {
            "title": "Refactor fixed-width components",
            "urgency": "medium",
            "detail": "1 element(s) exceeded viewport width in tested layouts; use responsive component constraints."
          }
        ]
      },
      "securityLight": {
        "score": 31,
        "urgency": "medium",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": false,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "connection": "Keep-Alive",
            "content-encoding": "gzip",
            "content-type": "text/html;charset=UTF-8",
            "date": "Mon, 30 Mar 2026 00:19:45 GMT",
            "keep-alive": "timeout=15, max=500",
            "referrer-policy": "origin-when-cross-origin,strict-origin-when-cross-origin",
            "server": "Microsoft-IIS/5.0",
            "set-cookie": "VISITOR=returning; Path=/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/ciudadanos; HttpOnly; Secure; SameSite=None\nTS01a8e1d0=01d9c3d3186e8e15b5b9edc17f17cb4b1f7777e3ed62999d88da62791f603954b0657e3ad206abe0e840a1f31af532847905d0382b90b7a84781f287b0f8ea376c270e95757560930f0447662c82f27874386d2204; Path=/; HttpOnly; Secure; SameSite=None\nTS01cc21ed=01d9c3d31875eb4ee065abf109a5ef141663ea9e5662999d88da62791f603954b0657e3ad206abe0e840a1f31af532847905d0382b90b7a84781f287b0f8ea376c270e95758790e5f992ab8a462f1118463bf9b8565956db104bfe20987b3f54c98e7c3998; path=/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/ciudadanos; HttpOnly; Secure; SameSite=None",
            "strict-transport-security": "max-age=63072000; preload",
            "transfer-encoding": "chunked",
            "vary": "Accept-Encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1;mode=block",
            "traceresponse": "00-6d1458c6344d1bb57cc9a2c82aec184e-5a0c9761bc84a2b2-01",
            "x-dt-tracestate": "acd5d8fe-344161ca@dt"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add a Content-Security-Policy header",
            "urgency": "high",
            "detail": "Add an appropriate CSP to reduce script injection and resource loading risk."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 30,
        "urgency": "medium",
        "origin": "https://administracion.gob.es",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://administracion.gob.es/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/favicon.ico",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 2383117.2,
        "checks": {
          "hasEffectiveTextCompression": false
        },
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "estimatedSavingsBytes": 1293162,
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "estimatedSavingsBytes": 891965,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "estimatedSavingsBytes": 126680.2,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "estimatedSavingsBytes": 63759,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "estimatedSavingsBytes": 7551,
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings."
          }
        ],
        "recommendations": [
          {
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.23 MB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
          },
          {
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
          },
          {
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 7.37 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 4261740.2,
        "totalEstimatedBlockingMs": 9193,
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable text compression",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat.",
            "estimatedSavingsBytes": 1293162,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,263 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-text-compression"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 1195529,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,168 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 891965,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 871 KiB",
            "urgency": "high",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unused-javascript",
            "title": "Remove unused JavaScript",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code.",
            "estimatedSavingsBytes": 547292,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 534 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-javascript"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9193,
            "displayValue": "Est savings of 9,190 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "offscreen-images",
            "title": "Lazy-load offscreen images",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed.",
            "estimatedSavingsBytes": 129090,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 126 KiB",
            "urgency": "medium",
            "sourceAuditId": "offscreen-images"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 126680.2,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 124 KiB",
            "urgency": "medium",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 63759,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 62 KiB",
            "urgency": "medium",
            "sourceAuditId": "unminified-javascript"
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss.",
            "estimatedSavingsBytes": 7551,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-optimized-images"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 6712,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-responsive-images"
          }
        ],
        "recommendations": [
          {
            "title": "Enable text compression",
            "urgency": "high",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat. Estimated byte savings: 1.23 MB."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "high",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 1.14 MB."
          },
          {
            "title": "Minify CSS",
            "urgency": "high",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 871.06 KB."
          },
          {
            "title": "Remove unused JavaScript",
            "urgency": "high",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code. Estimated byte savings: 534.46 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 9193 ms."
          },
          {
            "title": "Lazy-load offscreen images",
            "urgency": "medium",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed. Estimated byte savings: 126.06 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1912860
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.82 MB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.82 MB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 30,
        "urgency": "high",
        "transferBytes": 2222758,
        "css": {
          "unusedBytes": 1195529,
          "ratio": 0.5378583723464273,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 547292,
          "duplicatedBytes": 0,
          "ratio": 0.24622203586715244,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "high",
            "estimatedSavingsBytes": 1195529,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          },
          {
            "area": "javascript",
            "title": "Remove unused JavaScript and feature bundles",
            "urgency": "high",
            "estimatedSavingsBytes": 547292,
            "strategy": "Drop unused packages and feature code, or move them behind route-level or interaction-triggered imports.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 35,
        "urgency": "high",
        "transferBytes": 2222758,
        "estimatedDeferrableBytes": 1871911,
        "renderBlockingMs": 9193,
        "breakdown": {
          "offscreenImageSavings": 129090,
          "unusedJavascriptSavings": 547292,
          "unusedCssSavings": 1195529
        },
        "candidates": [
          {
            "title": "Lazy-load offscreen images",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 129090,
            "strategy": "Load below-the-fold images only when they approach the viewport.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Defer non-critical JavaScript",
            "area": "javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 547292,
            "strategy": "Split bundles and load feature code on interaction or route transition.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1195529,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9193,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy stylesheet from administracion.gob.es",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from administracion.gob.es",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 254411,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from administracion.gob.es",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.googletagmanager.com",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 145359,
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 34,
        "urgency": "medium",
        "providerCount": 1,
        "requestCount": 2,
        "transferBytes": 290023,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290023,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "medium",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "medium",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          }
        ]
      },
      "redundancy": {
        "score": 68,
        "urgency": "high",
        "transferBytes": 2222758,
        "estimatedRedundantBytes": 1742821,
        "redundancyRatio": 0.7840804082135797,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 1195529,
            "displayValue": "Est savings of 1,168 KiB"
          },
          {
            "auditId": "unused-javascript",
            "title": "Reduce unused JavaScript",
            "savingsBytes": 547292,
            "displayValue": "Est savings of 534 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "high",
            "estimatedSavingsBytes": 1195529,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce unused javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 547292,
            "auditId": "unused-javascript",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Enable and verify text compression",
            "urgency": "medium",
            "estimatedSavingsBytes": 1293162,
            "auditId": "uses-text-compression",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 47,
        "urgency": "high",
        "totalTransferBytes": 2222758,
        "heavyRequestCount": 6,
        "heavyBytes": 1925234,
        "heavyRatio": 0.8661464720855802,
        "heavyRequests": [
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "transferSize": 1177193,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "transferSize": 254411,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "transferSize": 159823,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "transferSize": 145359,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-4YNNM3J1E0&cx=c&gtm=4e63p1",
            "transferSize": 144664,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/libs/jquery.mCustomScrollbar.css",
            "transferSize": 43784,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 1220977
          },
          {
            "resourceType": "script",
            "count": 3,
            "transferBytes": 544434
          },
          {
            "resourceType": "image",
            "count": 1,
            "transferBytes": 159823
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "administracion.gob.es",
            "count": 4,
            "transferBytes": 1635211
          },
          {
            "domain": "www.googletagmanager.com",
            "count": 2,
            "transferBytes": 290023
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Lazy-load offscreen images and media galleries",
            "urgency": "medium",
            "estimatedSavingsBytes": 129090,
            "strategy": "Load imagery only when it enters the viewport or when a user opens the relevant section.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Split JavaScript by route or interaction",
            "urgency": "high",
            "estimatedSavingsBytes": 547292,
            "strategy": "Move non-critical bundles behind route-level or event-driven imports so they are only fetched on demand.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy stylesheet asset from administracion.gob.es",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "strategy": "Split this stylesheet so component-specific CSS is delivered only when the component is rendered.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 254411,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0,
          "displayValue": "12.4 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 12.4 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": 0.03,
          "displayValue": "12.7 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- Current value: 12.7 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": 0,
          "displayValue": "Est savings of 534 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- Current value: Est savings of 534 KiB\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 1,168 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 1,168 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 9,190 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 9,190 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": 0,
          "displayValue": "Est savings of 1,263 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- Current value: Est savings of 1,263 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 124 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 124 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 7 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- Current value: Est savings of 7 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 126 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- Current value: Est savings of 126 KiB\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://administracion.gob.es/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/consumidores/conexion-servicios/telecomunicaciones",
      "status": "ok",
      "finalUrl": "https://administracion.gob.es/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/consumidores/conexion-servicios/telecomunicaciones",
      "performanceScore": 0.56,
      "bestPracticesScore": 0.79,
      "transferBytes": 2189839,
      "co2Grams": 0.8388865898946,
      "greenWeb": {
        "page": {
          "hostname": "administracion.gob.es",
          "checked": true,
          "status": "not-green",
          "green": false,
          "hostedBy": null,
          "hostedByWebsite": null,
          "listedProvider": null,
          "partner": null,
          "modified": "2026-03-29T13:38:28.588564",
          "supportingDocuments": [],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/administracion.gob.es",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290023,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "not-green",
          "externalOriginCount": 1,
          "greenCount": 1,
          "notGreenCount": 1,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 70,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/buscador/buscadorsimple.htm|input|text|q|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "q",
            "formContext": "form|get|/buscador/buscadorsimple.htm",
            "hasLabel": false,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 70,
              "urgency": "high",
              "issues": [
                "Missing associated label",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add a programmatic label using <label>, aria-label, or aria-labelledby.",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "Missing associated label",
            "urgency": "high",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 35,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": false,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Telecommunications services: getting connected - Connection to utilities - Consumer rights - Citizens - Your rights and obligations in the EU - Tu espacio europeo - Punto de Acceso General",
          "lang": "en",
          "charset": "",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "The rights of telecommunications users, how to make complaints and more useful information",
          "robots": "all",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 38,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 76,
          "tabletSmallTapTargets": 105,
          "fixedWidthOffenders": 4,
          "oversizedMedia": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 399,
            "viewportHeight": 864,
            "contentWidth": 399,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 4,
            "smallTapTargets": 76,
            "oversizedMedia": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 829,
            "viewportHeight": 1193,
            "contentWidth": 829,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 105,
            "oversizedMedia": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 76 small targets on mobile and 105 on tablet."
          },
          {
            "title": "Refactor fixed-width components",
            "urgency": "medium",
            "detail": "4 element(s) exceeded viewport width in tested layouts; use responsive component constraints."
          }
        ]
      },
      "securityLight": {
        "score": 31,
        "urgency": "medium",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": false,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "connection": "Keep-Alive",
            "content-encoding": "gzip",
            "content-type": "text/html;charset=UTF-8",
            "date": "Mon, 30 Mar 2026 00:20:07 GMT",
            "keep-alive": "timeout=15, max=500",
            "referrer-policy": "origin-when-cross-origin,strict-origin-when-cross-origin",
            "server": "Microsoft-IIS/5.0",
            "set-cookie": "VISITOR=returning; Path=/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/ciudadanos; HttpOnly; Secure; SameSite=None\nTS01a8e1d0=01d9c3d3186e8e15b5b9edc17f17cb4b1f7777e3ed62999d88da62791f603954b0657e3ad206abe0e840a1f31af532847905d0382b90b7a84781f287b0f8ea376c270e95757560930f0447662c82f27874386d2204; Path=/; HttpOnly; Secure; SameSite=None\nTS01cc21ed=01d9c3d31875eb4ee065abf109a5ef141663ea9e5662999d88da62791f603954b0657e3ad206abe0e840a1f31af532847905d0382b90b7a84781f287b0f8ea376c270e95758790e5f992ab8a462f1118463bf9b8565956db104bfe20987b3f54c98e7c3998; path=/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/ciudadanos; HttpOnly; Secure; SameSite=None",
            "strict-transport-security": "max-age=63072000; preload",
            "transfer-encoding": "chunked",
            "vary": "Accept-Encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1;mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add a Content-Security-Policy header",
            "urgency": "high",
            "detail": "Add an appropriate CSP to reduce script injection and resource loading risk."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 30,
        "urgency": "medium",
        "origin": "https://administracion.gob.es",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://administracion.gob.es/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/favicon.ico",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 2383117.2,
        "checks": {
          "hasEffectiveTextCompression": false
        },
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "estimatedSavingsBytes": 1293162,
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "estimatedSavingsBytes": 891965,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "estimatedSavingsBytes": 126680.2,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "estimatedSavingsBytes": 63759,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "estimatedSavingsBytes": 7551,
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings."
          }
        ],
        "recommendations": [
          {
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.23 MB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
          },
          {
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
          },
          {
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 7.37 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 4235433.2,
        "totalEstimatedBlockingMs": 8958,
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable text compression",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat.",
            "estimatedSavingsBytes": 1293162,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,263 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-text-compression"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 1195797,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,168 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 891965,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 871 KiB",
            "urgency": "high",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unused-javascript",
            "title": "Remove unused JavaScript",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code.",
            "estimatedSavingsBytes": 544874,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 532 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-javascript"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 8958,
            "displayValue": "Est savings of 8,960 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 126680.2,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 124 KiB",
            "urgency": "medium",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "offscreen-images",
            "title": "Lazy-load offscreen images",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed.",
            "estimatedSavingsBytes": 104933,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 102 KiB",
            "urgency": "medium",
            "sourceAuditId": "offscreen-images"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 63759,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 62 KiB",
            "urgency": "medium",
            "sourceAuditId": "unminified-javascript"
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss.",
            "estimatedSavingsBytes": 7551,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-optimized-images"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 6712,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-responsive-images"
          }
        ],
        "recommendations": [
          {
            "title": "Enable text compression",
            "urgency": "high",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat. Estimated byte savings: 1.23 MB."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "high",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 1.14 MB."
          },
          {
            "title": "Minify CSS",
            "urgency": "high",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 871.06 KB."
          },
          {
            "title": "Remove unused JavaScript",
            "urgency": "high",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code. Estimated byte savings: 532.10 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 8958 ms."
          },
          {
            "title": "Serve images in next-gen formats",
            "urgency": "medium",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 123.71 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1880245
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.79 MB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.79 MB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 33,
        "urgency": "high",
        "transferBytes": 2189839,
        "css": {
          "unusedBytes": 1195797,
          "ratio": 0.5460661719879863,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 544874,
          "duplicatedBytes": 0,
          "ratio": 0.2488192054301709,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0.125,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "high",
            "estimatedSavingsBytes": 1195797,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          },
          {
            "area": "javascript",
            "title": "Remove unused JavaScript and feature bundles",
            "urgency": "high",
            "estimatedSavingsBytes": 544874,
            "strategy": "Drop unused packages and feature code, or move them behind route-level or interaction-triggered imports.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 35,
        "urgency": "high",
        "transferBytes": 2189839,
        "estimatedDeferrableBytes": 1845604,
        "renderBlockingMs": 8958,
        "breakdown": {
          "offscreenImageSavings": 104933,
          "unusedJavascriptSavings": 544874,
          "unusedCssSavings": 1195797
        },
        "candidates": [
          {
            "title": "Lazy-load offscreen images",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 104933,
            "strategy": "Load below-the-fold images only when they approach the viewport.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Defer non-critical JavaScript",
            "area": "javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 544874,
            "strategy": "Split bundles and load feature code on interaction or route transition.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1195797,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 8958,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy stylesheet from administracion.gob.es",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from administracion.gob.es",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 254529,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from administracion.gob.es",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.googletagmanager.com",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 145359,
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 34,
        "urgency": "medium",
        "providerCount": 1,
        "requestCount": 2,
        "transferBytes": 290023,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290023,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "medium",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "medium",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          }
        ]
      },
      "redundancy": {
        "score": 79,
        "urgency": "high",
        "transferBytes": 2189839,
        "estimatedRedundantBytes": 1740671,
        "redundancyRatio": 0.7948853774181572,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 1195797,
            "displayValue": "Est savings of 1,168 KiB"
          },
          {
            "auditId": "unused-javascript",
            "title": "Reduce unused JavaScript",
            "savingsBytes": 544874,
            "displayValue": "Est savings of 532 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "high",
            "estimatedSavingsBytes": 1195797,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce unused javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 544874,
            "auditId": "unused-javascript",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Enable and verify text compression",
            "urgency": "medium",
            "estimatedSavingsBytes": 1293162,
            "auditId": "uses-text-compression",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce DOM complexity and redundant markup",
            "urgency": "medium",
            "estimatedSavingsBytes": 0,
            "auditId": "dom-size",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 47,
        "urgency": "high",
        "totalTransferBytes": 2189839,
        "heavyRequestCount": 6,
        "heavyBytes": 1925352,
        "heavyRatio": 0.8792208011639212,
        "heavyRequests": [
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "transferSize": 1177193,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "transferSize": 254529,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "transferSize": 159823,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "transferSize": 145359,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-4YNNM3J1E0&cx=c&gtm=4e63p1",
            "transferSize": 144664,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/libs/jquery.mCustomScrollbar.css",
            "transferSize": 43784,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 1220977
          },
          {
            "resourceType": "script",
            "count": 3,
            "transferBytes": 544552
          },
          {
            "resourceType": "image",
            "count": 1,
            "transferBytes": 159823
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "administracion.gob.es",
            "count": 4,
            "transferBytes": 1635329
          },
          {
            "domain": "www.googletagmanager.com",
            "count": 2,
            "transferBytes": 290023
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Lazy-load offscreen images and media galleries",
            "urgency": "medium",
            "estimatedSavingsBytes": 104933,
            "strategy": "Load imagery only when it enters the viewport or when a user opens the relevant section.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Split JavaScript by route or interaction",
            "urgency": "high",
            "estimatedSavingsBytes": 544874,
            "strategy": "Move non-critical bundles behind route-level or event-driven imports so they are only fetched on demand.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy stylesheet asset from administracion.gob.es",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "strategy": "Split this stylesheet so component-specific CSS is delivered only when the component is rendered.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 254529,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0,
          "displayValue": "12.2 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 12.2 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": 0.06,
          "displayValue": "10.8 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- Current value: 10.8 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": 0,
          "displayValue": "Est savings of 532 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- Current value: Est savings of 532 KiB\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 1,168 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 1,168 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 8,960 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 8,960 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": 0,
          "displayValue": "Est savings of 1,263 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- Current value: Est savings of 1,263 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 124 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 124 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 7 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- Current value: Est savings of 7 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 102 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- Current value: Est savings of 102 KiB\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "dom-size",
          "title": "Avoid an excessive DOM size",
          "description": "A large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).",
          "score": 0.5,
          "displayValue": "823 elements",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Avoid an excessive DOM size\n\n- Lighthouse audit: dom-size\n- Current value: 823 elements\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nA large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://administracion.gob.es/pag_Home/gl/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/vehiculos/permiso-conduccion/validez-canje-reconocimiento",
      "status": "ok",
      "finalUrl": "https://administracion.gob.es/pag_Home/gl/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/vehiculos/permiso-conduccion/validez-canje-reconocimiento",
      "performanceScore": 0.55,
      "bestPracticesScore": 0.79,
      "transferBytes": 1913605,
      "co2Grams": 0.7330664824470001,
      "greenWeb": {
        "page": {
          "hostname": "administracion.gob.es",
          "checked": true,
          "status": "not-green",
          "green": false,
          "hostedBy": null,
          "hostedByWebsite": null,
          "listedProvider": null,
          "partner": null,
          "modified": "2026-03-29T13:38:28.588564",
          "supportingDocuments": [],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/administracion.gob.es",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290023,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "not-green",
          "externalOriginCount": 1,
          "greenCount": 1,
          "notGreenCount": 1,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 70,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/buscador/buscadorsimple.htm|input|text|q|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "q",
            "formContext": "form|get|/buscador/buscadorsimple.htm",
            "hasLabel": false,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 70,
              "urgency": "high",
              "issues": [
                "Missing associated label",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add a programmatic label using <label>, aria-label, or aria-labelledby.",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "Missing associated label",
            "urgency": "high",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 25,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": true,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": false,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Validez y canje de un permiso de conducir de la UE - Obtención y renovación del permiso de conducción - Vehículos - Ciudadanos - Tus derechos y obligaciones en la UE - Tu espacio europeo - Punto de Acceso General",
          "lang": "gl",
          "charset": "",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Conoce la validez y el canje de un permiso de conducir de la UE",
          "robots": "all",
          "canonical": "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/vehiculos/permiso-conduccion/validez-canje-reconocimiento",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 32,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 26,
          "tabletSmallTapTargets": 58,
          "fixedWidthOffenders": 1,
          "oversizedMedia": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 399,
            "viewportHeight": 864,
            "contentWidth": 399,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 1,
            "smallTapTargets": 26,
            "oversizedMedia": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 829,
            "viewportHeight": 1193,
            "contentWidth": 829,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 58,
            "oversizedMedia": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 26 small targets on mobile and 58 on tablet."
          },
          {
            "title": "Refactor fixed-width components",
            "urgency": "medium",
            "detail": "1 element(s) exceeded viewport width in tested layouts; use responsive component constraints."
          }
        ]
      },
      "securityLight": {
        "score": 31,
        "urgency": "medium",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": false,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "connection": "Keep-Alive",
            "content-encoding": "gzip",
            "content-length": "13751",
            "content-type": "text/html;charset=UTF-8",
            "date": "Mon, 30 Mar 2026 00:20:30 GMT",
            "keep-alive": "timeout=15, max=500",
            "referrer-policy": "origin-when-cross-origin,strict-origin-when-cross-origin",
            "server": "Microsoft-IIS/5.0",
            "set-cookie": "VISITOR=returning; Path=/pag_Home/gl/Tu-espacio-europeo/derechos-obligaciones/ciudadanos; HttpOnly; Secure; SameSite=None\nTS01a8e1d0=01d9c3d318362ec54be3a35cae5fd00ed67f28c82880529b1b9ba56384d07a19b66567890ae44783a444bdd5d48d6a967bacc4b9ad4bff902aea9909935fb9326af3d6d004faa92ebe7359ad7861723015378e0fc9; Path=/; HttpOnly; Secure; SameSite=None\nTS0146228d=01d9c3d31875eb4ee065abf109a5ef141663ea9e5662999d88da62791f603954b0657e3ad206abe0e840a1f31af532847905d0382b90b7a84781f287b0f8ea376c270e95758790e5f992ab8a462f1118463bf9b8565956db104bfe20987b3f54c98e7c3998; path=/pag_Home/gl/Tu-espacio-europeo/derechos-obligaciones/ciudadanos; HttpOnly; Secure; SameSite=None",
            "strict-transport-security": "max-age=63072000; preload",
            "vary": "Accept-Encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1;mode=block",
            "traceresponse": "00-268bd71f4251e51b02918f7efd991788-d7f92ac9769e7f86-01",
            "x-dt-tracestate": "acd5d8fe-344161ca@dt"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add a Content-Security-Policy header",
            "urgency": "high",
            "detail": "Add an appropriate CSP to reduce script injection and resource loading risk."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 30,
        "urgency": "medium",
        "origin": "https://administracion.gob.es",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://administracion.gob.es/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/favicon.ico",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 2197475.2,
        "checks": {
          "hasEffectiveTextCompression": false
        },
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "estimatedSavingsBytes": 1107520,
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "estimatedSavingsBytes": 891965,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "estimatedSavingsBytes": 126680.2,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "estimatedSavingsBytes": 63759,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "estimatedSavingsBytes": 7551,
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings."
          }
        ],
        "recommendations": [
          {
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.06 MB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
          },
          {
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
          },
          {
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 7.37 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 4024824.2,
        "totalEstimatedBlockingMs": 8056,
        "opportunities": [
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 1197644,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,170 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "uses-text-compression",
            "title": "Enable text compression",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat.",
            "estimatedSavingsBytes": 1107520,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,082 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-text-compression"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 891965,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 871 KiB",
            "urgency": "high",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unused-javascript",
            "title": "Remove unused JavaScript",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code.",
            "estimatedSavingsBytes": 531878,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 519 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-javascript"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 8056,
            "displayValue": "Est savings of 8,060 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 126680.2,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 124 KiB",
            "urgency": "medium",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "offscreen-images",
            "title": "Lazy-load offscreen images",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed.",
            "estimatedSavingsBytes": 91115,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 89 KiB",
            "urgency": "medium",
            "sourceAuditId": "offscreen-images"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 63759,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 62 KiB",
            "urgency": "medium",
            "sourceAuditId": "unminified-javascript"
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss.",
            "estimatedSavingsBytes": 7551,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-optimized-images"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 6712,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-responsive-images"
          }
        ],
        "recommendations": [
          {
            "title": "Remove unused CSS",
            "urgency": "high",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 1.14 MB."
          },
          {
            "title": "Enable text compression",
            "urgency": "high",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat. Estimated byte savings: 1.06 MB."
          },
          {
            "title": "Minify CSS",
            "urgency": "high",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 871.06 KB."
          },
          {
            "title": "Remove unused JavaScript",
            "urgency": "high",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code. Estimated byte savings: 519.41 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 8056 ms."
          },
          {
            "title": "Serve images in next-gen formats",
            "urgency": "medium",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 123.71 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1606890
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.53 MB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.53 MB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 34,
        "urgency": "high",
        "transferBytes": 1913605,
        "css": {
          "unusedBytes": 1197644,
          "ratio": 0.6258574784242307,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 531878,
          "duplicatedBytes": 0,
          "ratio": 0.27794555302687857,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "high",
            "estimatedSavingsBytes": 1197644,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          },
          {
            "area": "javascript",
            "title": "Remove unused JavaScript and feature bundles",
            "urgency": "high",
            "estimatedSavingsBytes": 531878,
            "strategy": "Drop unused packages and feature code, or move them behind route-level or interaction-triggered imports.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 38,
        "urgency": "high",
        "transferBytes": 1913605,
        "estimatedDeferrableBytes": 1820637,
        "renderBlockingMs": 8056,
        "breakdown": {
          "offscreenImageSavings": 91115,
          "unusedJavascriptSavings": 531878,
          "unusedCssSavings": 1197644
        },
        "candidates": [
          {
            "title": "Lazy-load offscreen images",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 91115,
            "strategy": "Load below-the-fold images only when they approach the viewport.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Defer non-critical JavaScript",
            "area": "javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 531878,
            "strategy": "Split bundles and load feature code on interaction or route transition.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1197644,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 8056,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy stylesheet from administracion.gob.es",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from administracion.gob.es",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 159817,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.googletagmanager.com",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 145359,
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 34,
        "urgency": "medium",
        "providerCount": 1,
        "requestCount": 2,
        "transferBytes": 290023,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290023,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "medium",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "medium",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          }
        ]
      },
      "redundancy": {
        "score": 72,
        "urgency": "high",
        "transferBytes": 1913605,
        "estimatedRedundantBytes": 1729522,
        "redundancyRatio": 0.9038030314511093,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 1197644,
            "displayValue": "Est savings of 1,170 KiB"
          },
          {
            "auditId": "unused-javascript",
            "title": "Reduce unused JavaScript",
            "savingsBytes": 531878,
            "displayValue": "Est savings of 519 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "high",
            "estimatedSavingsBytes": 1197644,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce unused javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 531878,
            "auditId": "unused-javascript",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Enable and verify text compression",
            "urgency": "medium",
            "estimatedSavingsBytes": 1107520,
            "auditId": "uses-text-compression",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 46,
        "urgency": "high",
        "totalTransferBytes": 1913605,
        "heavyRequestCount": 5,
        "heavyBytes": 1670817,
        "heavyRatio": 0.8731253315078086,
        "heavyRequests": [
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "transferSize": 1177193,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "transferSize": 159817,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "transferSize": 145359,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-4YNNM3J1E0&cx=c&gtm=4e63p1",
            "transferSize": 144664,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/libs/jquery.mCustomScrollbar.css",
            "transferSize": 43784,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 1220977
          },
          {
            "resourceType": "script",
            "count": 2,
            "transferBytes": 290023
          },
          {
            "resourceType": "image",
            "count": 1,
            "transferBytes": 159817
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "administracion.gob.es",
            "count": 3,
            "transferBytes": 1380794
          },
          {
            "domain": "www.googletagmanager.com",
            "count": 2,
            "transferBytes": 290023
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Lazy-load offscreen images and media galleries",
            "urgency": "medium",
            "estimatedSavingsBytes": 91115,
            "strategy": "Load imagery only when it enters the viewport or when a user opens the relevant section.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Split JavaScript by route or interaction",
            "urgency": "high",
            "estimatedSavingsBytes": 531878,
            "strategy": "Move non-critical bundles behind route-level or event-driven imports so they are only fetched on demand.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy stylesheet asset from administracion.gob.es",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "strategy": "Split this stylesheet so component-specific CSS is delivered only when the component is rendered.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 159817,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from www.googletagmanager.com",
            "urgency": "medium",
            "estimatedSavingsBytes": 145359,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0,
          "displayValue": "10.7 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 10.7 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": 0.03,
          "displayValue": "12.2 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- Current value: 12.2 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": 0,
          "displayValue": "Est savings of 519 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- Current value: Est savings of 519 KiB\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 1,170 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 1,170 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 8,060 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 8,060 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": 0,
          "displayValue": "Est savings of 1,082 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- Current value: Est savings of 1,082 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 124 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 124 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 7 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- Current value: Est savings of 7 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 89 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- Current value: Est savings of 89 KiB\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://administracion.gob.es/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/empresas/empleados/seguridad-social/alta-empresario",
      "status": "ok",
      "finalUrl": "https://administracion.gob.es/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/empresas/empleados/seguridad-social/alta-empresario",
      "performanceScore": 0.56,
      "bestPracticesScore": 0.79,
      "transferBytes": 2167511,
      "co2Grams": 0.8303331483954001,
      "greenWeb": {
        "page": {
          "hostname": "administracion.gob.es",
          "checked": true,
          "status": "not-green",
          "green": false,
          "hostedBy": null,
          "hostedByWebsite": null,
          "listedProvider": null,
          "partner": null,
          "modified": "2026-03-29T13:38:28.588564",
          "supportingDocuments": [],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/administracion.gob.es",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290025,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "not-green",
          "externalOriginCount": 1,
          "greenCount": 1,
          "notGreenCount": 1,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 70,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/buscador/buscadorsimple.htm|input|text|q|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "q",
            "formContext": "form|get|/buscador/buscadorsimple.htm",
            "hasLabel": false,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 70,
              "urgency": "high",
              "issues": [
                "Missing associated label",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add a programmatic label using <label>, aria-label, or aria-labelledby.",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "Missing associated label",
            "urgency": "high",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 35,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": false,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Registering as an employer - Social security - Employees - Business - Your rights and obligations in the EU - Tu espacio europeo - Punto de Acceso General",
          "lang": "en",
          "charset": "",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Information on when you need to register in the social security system as an employer and the deadline for doing so, what registration in the social security system as an employer involves, what procedures have to be followed and how, and your obligations as an employer with respect to social security",
          "robots": "all",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 40,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 42,
          "tabletSmallTapTargets": 67,
          "fixedWidthOffenders": 5,
          "oversizedMedia": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 399,
            "viewportHeight": 864,
            "contentWidth": 399,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 4,
            "smallTapTargets": 42,
            "oversizedMedia": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 829,
            "viewportHeight": 1193,
            "contentWidth": 829,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 1,
            "smallTapTargets": 67,
            "oversizedMedia": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 42 small targets on mobile and 67 on tablet."
          },
          {
            "title": "Refactor fixed-width components",
            "urgency": "medium",
            "detail": "5 element(s) exceeded viewport width in tested layouts; use responsive component constraints."
          }
        ]
      },
      "securityLight": {
        "score": 31,
        "urgency": "medium",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": false,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "connection": "Keep-Alive",
            "content-encoding": "gzip",
            "content-type": "text/html;charset=UTF-8",
            "date": "Mon, 30 Mar 2026 00:20:52 GMT",
            "keep-alive": "timeout=15, max=500",
            "referrer-policy": "origin-when-cross-origin,strict-origin-when-cross-origin",
            "server": "Microsoft-IIS/5.0",
            "set-cookie": "VISITOR=returning; Path=/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/empresas; HttpOnly; Secure; SameSite=None\nTS01a8e1d0=01d9c3d318362ec54be3a35cae5fd00ed67f28c82880529b1b9ba56384d07a19b66567890ae44783a444bdd5d48d6a967bacc4b9ad4bff902aea9909935fb9326af3d6d004faa92ebe7359ad7861723015378e0fc9; Path=/; HttpOnly; Secure; SameSite=None\nTS01e4c404=01d9c3d3183d0ab5e35f0a4d3b0e06f02e6973180380529b1b9ba56384d07a19b66567890ae44783a444bdd5d48d6a967bacc4b9ad4bff902aea9909935fb9326af3d6d004f98a4d48eaff3a52021502918d296d1fe81761193e34385adc30c5a064c0078b; path=/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/empresas; HttpOnly; Secure; SameSite=None",
            "strict-transport-security": "max-age=63072000; preload",
            "transfer-encoding": "chunked",
            "vary": "Accept-Encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1;mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add a Content-Security-Policy header",
            "urgency": "high",
            "detail": "Add an appropriate CSP to reduce script injection and resource loading risk."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 30,
        "urgency": "medium",
        "origin": "https://administracion.gob.es",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://administracion.gob.es/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/favicon.ico",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 2383117.2,
        "checks": {
          "hasEffectiveTextCompression": false
        },
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "estimatedSavingsBytes": 1293162,
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "estimatedSavingsBytes": 891965,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "estimatedSavingsBytes": 126680.2,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "estimatedSavingsBytes": 63759,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "estimatedSavingsBytes": 7551,
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings."
          }
        ],
        "recommendations": [
          {
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.23 MB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
          },
          {
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
          },
          {
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 7.37 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 4226329.2,
        "totalEstimatedBlockingMs": 9299,
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable text compression",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat.",
            "estimatedSavingsBytes": 1293162,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,263 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-text-compression"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 1198036,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,170 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 891965,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 871 KiB",
            "urgency": "high",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unused-javascript",
            "title": "Remove unused JavaScript",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code.",
            "estimatedSavingsBytes": 547349,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 535 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-javascript"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9299,
            "displayValue": "Est savings of 9,300 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 126680.2,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 124 KiB",
            "urgency": "medium",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "offscreen-images",
            "title": "Lazy-load offscreen images",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed.",
            "estimatedSavingsBytes": 91115,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 89 KiB",
            "urgency": "medium",
            "sourceAuditId": "offscreen-images"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 63759,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 62 KiB",
            "urgency": "medium",
            "sourceAuditId": "unminified-javascript"
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss.",
            "estimatedSavingsBytes": 7551,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-optimized-images"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 6712,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-responsive-images"
          }
        ],
        "recommendations": [
          {
            "title": "Enable text compression",
            "urgency": "high",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat. Estimated byte savings: 1.23 MB."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "high",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 1.14 MB."
          },
          {
            "title": "Minify CSS",
            "urgency": "high",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 871.06 KB."
          },
          {
            "title": "Remove unused JavaScript",
            "urgency": "high",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code. Estimated byte savings: 534.52 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 9299 ms."
          },
          {
            "title": "Serve images in next-gen formats",
            "urgency": "medium",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 123.71 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1859657
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.77 MB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.77 MB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 31,
        "urgency": "high",
        "transferBytes": 2167511,
        "css": {
          "unusedBytes": 1198036,
          "ratio": 0.5527242998997468,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 547349,
          "duplicatedBytes": 0,
          "ratio": 0.2525242086430011,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "high",
            "estimatedSavingsBytes": 1198036,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          },
          {
            "area": "javascript",
            "title": "Remove unused JavaScript and feature bundles",
            "urgency": "high",
            "estimatedSavingsBytes": 547349,
            "strategy": "Drop unused packages and feature code, or move them behind route-level or interaction-triggered imports.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 35,
        "urgency": "high",
        "transferBytes": 2167511,
        "estimatedDeferrableBytes": 1836500,
        "renderBlockingMs": 9299,
        "breakdown": {
          "offscreenImageSavings": 91115,
          "unusedJavascriptSavings": 547349,
          "unusedCssSavings": 1198036
        },
        "candidates": [
          {
            "title": "Lazy-load offscreen images",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 91115,
            "strategy": "Load below-the-fold images only when they approach the viewport.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Defer non-critical JavaScript",
            "area": "javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 547349,
            "strategy": "Split bundles and load feature code on interaction or route transition.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1198036,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9299,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy stylesheet from administracion.gob.es",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from administracion.gob.es",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 254417,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from administracion.gob.es",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.googletagmanager.com",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 145359,
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 34,
        "urgency": "medium",
        "providerCount": 1,
        "requestCount": 2,
        "transferBytes": 290025,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290025,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "medium",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "medium",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          }
        ]
      },
      "redundancy": {
        "score": 69,
        "urgency": "high",
        "transferBytes": 2167511,
        "estimatedRedundantBytes": 1745385,
        "redundancyRatio": 0.8052485085427479,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 1198036,
            "displayValue": "Est savings of 1,170 KiB"
          },
          {
            "auditId": "unused-javascript",
            "title": "Reduce unused JavaScript",
            "savingsBytes": 547349,
            "displayValue": "Est savings of 535 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "high",
            "estimatedSavingsBytes": 1198036,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce unused javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 547349,
            "auditId": "unused-javascript",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Enable and verify text compression",
            "urgency": "medium",
            "estimatedSavingsBytes": 1293162,
            "auditId": "uses-text-compression",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 47,
        "urgency": "high",
        "totalTransferBytes": 2167511,
        "heavyRequestCount": 6,
        "heavyBytes": 1925242,
        "heavyRatio": 0.8882270955026295,
        "heavyRequests": [
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "transferSize": 1177193,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "transferSize": 254417,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "transferSize": 159823,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "transferSize": 145359,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-4YNNM3J1E0&cx=c&gtm=4e63p1",
            "transferSize": 144666,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/libs/jquery.mCustomScrollbar.css",
            "transferSize": 43784,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 1220977
          },
          {
            "resourceType": "script",
            "count": 3,
            "transferBytes": 544442
          },
          {
            "resourceType": "image",
            "count": 1,
            "transferBytes": 159823
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "administracion.gob.es",
            "count": 4,
            "transferBytes": 1635217
          },
          {
            "domain": "www.googletagmanager.com",
            "count": 2,
            "transferBytes": 290025
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Lazy-load offscreen images and media galleries",
            "urgency": "medium",
            "estimatedSavingsBytes": 91115,
            "strategy": "Load imagery only when it enters the viewport or when a user opens the relevant section.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Split JavaScript by route or interaction",
            "urgency": "high",
            "estimatedSavingsBytes": 547349,
            "strategy": "Move non-critical bundles behind route-level or event-driven imports so they are only fetched on demand.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy stylesheet asset from administracion.gob.es",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "strategy": "Split this stylesheet so component-specific CSS is delivered only when the component is rendered.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 254417,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0,
          "displayValue": "11.6 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 11.6 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": 0.06,
          "displayValue": "10.9 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- Current value: 10.9 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": 0,
          "displayValue": "Est savings of 535 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- Current value: Est savings of 535 KiB\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 1,170 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 1,170 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 9,300 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 9,300 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": 0,
          "displayValue": "Est savings of 1,263 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- Current value: Est savings of 1,263 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 124 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 124 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 7 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- Current value: Est savings of 7 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 89 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- Current value: Est savings of 89 KiB\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://administracion.gob.es/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/vehiculos/seguro-obligatorio/accidente-que-hacer",
      "status": "ok",
      "finalUrl": "https://administracion.gob.es/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/vehiculos/seguro-obligatorio/accidente-que-hacer",
      "performanceScore": 0.56,
      "bestPracticesScore": 0.79,
      "transferBytes": 2188997,
      "co2Grams": 0.8385640353557999,
      "greenWeb": {
        "page": {
          "hostname": "administracion.gob.es",
          "checked": true,
          "status": "not-green",
          "green": false,
          "hostedBy": null,
          "hostedByWebsite": null,
          "listedProvider": null,
          "partner": null,
          "modified": "2026-03-29T13:38:28.588564",
          "supportingDocuments": [],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/administracion.gob.es",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290032,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "not-green",
          "externalOriginCount": 1,
          "greenCount": 1,
          "notGreenCount": 1,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 70,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/buscador/buscadorsimple.htm|input|text|q|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "q",
            "formContext": "form|get|/buscador/buscadorsimple.htm",
            "hasLabel": false,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 70,
              "urgency": "high",
              "issues": [
                "Missing associated label",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add a programmatic label using <label>, aria-label, or aria-labelledby.",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "Missing associated label",
            "urgency": "high",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 25,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": true,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": false,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "¿Qué hacer en caso de accidentes en países de la Unión Europea? - Contratación del seguro obligatorio de los vehículos - Vehículos - Ciudadanos - Tus derechos y obligaciones en la UE - Tu espacio europeo - Punto de Acceso General",
          "lang": "eu",
          "charset": "",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Conoce los primeros trámites en el lugar del accidente, la reclamación de la indemnización e importes de la indemnización",
          "robots": "all",
          "canonical": "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/vehiculos/seguro-obligatorio/accidente-que-hacer",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 28,
          "tabletSmallTapTargets": 61,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 399,
            "viewportHeight": 864,
            "contentWidth": 399,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 28,
            "oversizedMedia": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 829,
            "viewportHeight": 1193,
            "contentWidth": 829,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 61,
            "oversizedMedia": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 28 small targets on mobile and 61 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 31,
        "urgency": "medium",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": false,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "connection": "Keep-Alive",
            "content-encoding": "gzip",
            "content-length": "14298",
            "content-type": "text/html;charset=UTF-8",
            "date": "Mon, 30 Mar 2026 00:21:14 GMT",
            "keep-alive": "timeout=15, max=500",
            "referrer-policy": "origin-when-cross-origin,strict-origin-when-cross-origin",
            "server": "Microsoft-IIS/5.0",
            "set-cookie": "VISITOR=returning; Path=/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/ciudadanos; HttpOnly; Secure; SameSite=None\nTS01a8e1d0=01d9c3d318362ec54be3a35cae5fd00ed67f28c82880529b1b9ba56384d07a19b66567890ae44783a444bdd5d48d6a967bacc4b9ad4bff902aea9909935fb9326af3d6d004faa92ebe7359ad7861723015378e0fc9; Path=/; HttpOnly; Secure; SameSite=None\nTS011d349b=01d9c3d3183d0ab5e35f0a4d3b0e06f02e6973180380529b1b9ba56384d07a19b66567890ae44783a444bdd5d48d6a967bacc4b9ad4bff902aea9909935fb9326af3d6d004f98a4d48eaff3a52021502918d296d1fe81761193e34385adc30c5a064c0078b; path=/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/ciudadanos; HttpOnly; Secure; SameSite=None",
            "strict-transport-security": "max-age=63072000; preload",
            "vary": "Accept-Encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1;mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add a Content-Security-Policy header",
            "urgency": "high",
            "detail": "Add an appropriate CSP to reduce script injection and resource loading risk."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 30,
        "urgency": "medium",
        "origin": "https://administracion.gob.es",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://administracion.gob.es/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/favicon.ico",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 2403496.2,
        "checks": {
          "hasEffectiveTextCompression": false
        },
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "estimatedSavingsBytes": 1313541,
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "estimatedSavingsBytes": 891965,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "estimatedSavingsBytes": 126680.2,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "estimatedSavingsBytes": 63759,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "estimatedSavingsBytes": 7551,
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings."
          }
        ],
        "recommendations": [
          {
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
          },
          {
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
          },
          {
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 7.37 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 4244698.2,
        "totalEstimatedBlockingMs": 9276,
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable text compression",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat.",
            "estimatedSavingsBytes": 1313541,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,283 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-text-compression"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 1197898,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,170 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 891965,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 871 KiB",
            "urgency": "high",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unused-javascript",
            "title": "Remove unused JavaScript",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code.",
            "estimatedSavingsBytes": 545477,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 533 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-javascript"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9276,
            "displayValue": "Est savings of 9,280 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 126680.2,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 124 KiB",
            "urgency": "medium",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "offscreen-images",
            "title": "Lazy-load offscreen images",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed.",
            "estimatedSavingsBytes": 91115,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 89 KiB",
            "urgency": "medium",
            "sourceAuditId": "offscreen-images"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 63759,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 62 KiB",
            "urgency": "medium",
            "sourceAuditId": "unminified-javascript"
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss.",
            "estimatedSavingsBytes": 7551,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-optimized-images"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 6712,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-responsive-images"
          }
        ],
        "recommendations": [
          {
            "title": "Enable text compression",
            "urgency": "high",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat. Estimated byte savings: 1.25 MB."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "high",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 1.14 MB."
          },
          {
            "title": "Minify CSS",
            "urgency": "high",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 871.06 KB."
          },
          {
            "title": "Remove unused JavaScript",
            "urgency": "high",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code. Estimated byte savings: 532.69 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 9276 ms."
          },
          {
            "title": "Serve images in next-gen formats",
            "urgency": "medium",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 123.71 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1881600
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.79 MB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.79 MB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 30,
        "urgency": "high",
        "transferBytes": 2188997,
        "css": {
          "unusedBytes": 1197898,
          "ratio": 0.5472360172261542,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 545477,
          "duplicatedBytes": 0,
          "ratio": 0.2491903826272946,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "high",
            "estimatedSavingsBytes": 1197898,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          },
          {
            "area": "javascript",
            "title": "Remove unused JavaScript and feature bundles",
            "urgency": "high",
            "estimatedSavingsBytes": 545477,
            "strategy": "Drop unused packages and feature code, or move them behind route-level or interaction-triggered imports.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 35,
        "urgency": "high",
        "transferBytes": 2188997,
        "estimatedDeferrableBytes": 1834490,
        "renderBlockingMs": 9276,
        "breakdown": {
          "offscreenImageSavings": 91115,
          "unusedJavascriptSavings": 545477,
          "unusedCssSavings": 1197898
        },
        "candidates": [
          {
            "title": "Lazy-load offscreen images",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 91115,
            "strategy": "Load below-the-fold images only when they approach the viewport.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Defer non-critical JavaScript",
            "area": "javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 545477,
            "strategy": "Split bundles and load feature code on interaction or route transition.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1197898,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9276,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy stylesheet from administracion.gob.es",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from administracion.gob.es",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 254411,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from administracion.gob.es",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.googletagmanager.com",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 145363,
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 34,
        "urgency": "medium",
        "providerCount": 1,
        "requestCount": 2,
        "transferBytes": 290032,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290032,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "medium",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "medium",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          }
        ]
      },
      "redundancy": {
        "score": 66,
        "urgency": "high",
        "transferBytes": 2188997,
        "estimatedRedundantBytes": 1743375,
        "redundancyRatio": 0.7964263998534489,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 1197898,
            "displayValue": "Est savings of 1,170 KiB"
          },
          {
            "auditId": "unused-javascript",
            "title": "Reduce unused JavaScript",
            "savingsBytes": 545477,
            "displayValue": "Est savings of 533 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "high",
            "estimatedSavingsBytes": 1197898,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce unused javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 545477,
            "auditId": "unused-javascript",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Enable and verify text compression",
            "urgency": "medium",
            "estimatedSavingsBytes": 1313541,
            "auditId": "uses-text-compression",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 47,
        "urgency": "high",
        "totalTransferBytes": 2188997,
        "heavyRequestCount": 6,
        "heavyBytes": 1925243,
        "heavyRatio": 0.8795091998755594,
        "heavyRequests": [
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "transferSize": 1177193,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "transferSize": 254411,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "transferSize": 159823,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "transferSize": 145363,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-4YNNM3J1E0&cx=c&gtm=4e63p1",
            "transferSize": 144669,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/libs/jquery.mCustomScrollbar.css",
            "transferSize": 43784,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 1220977
          },
          {
            "resourceType": "script",
            "count": 3,
            "transferBytes": 544443
          },
          {
            "resourceType": "image",
            "count": 1,
            "transferBytes": 159823
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "administracion.gob.es",
            "count": 4,
            "transferBytes": 1635211
          },
          {
            "domain": "www.googletagmanager.com",
            "count": 2,
            "transferBytes": 290032
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Lazy-load offscreen images and media galleries",
            "urgency": "medium",
            "estimatedSavingsBytes": 91115,
            "strategy": "Load imagery only when it enters the viewport or when a user opens the relevant section.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Split JavaScript by route or interaction",
            "urgency": "high",
            "estimatedSavingsBytes": 545477,
            "strategy": "Move non-critical bundles behind route-level or event-driven imports so they are only fetched on demand.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy stylesheet asset from administracion.gob.es",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "strategy": "Split this stylesheet so component-specific CSS is delivered only when the component is rendered.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 254411,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0,
          "displayValue": "11.9 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 11.9 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": 0.05,
          "displayValue": "11.5 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- Current value: 11.5 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": 0,
          "displayValue": "Est savings of 533 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- Current value: Est savings of 533 KiB\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 1,170 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 1,170 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 9,280 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 9,280 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": 0,
          "displayValue": "Est savings of 1,283 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- Current value: Est savings of 1,283 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 124 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 124 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 7 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- Current value: Est savings of 7 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 89 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- Current value: Est savings of 89 KiB\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/consumidores/conexion-servicios/telecomunicaciones",
      "status": "ok",
      "finalUrl": "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/consumidores/conexion-servicios/telecomunicaciones",
      "performanceScore": 0.55,
      "bestPracticesScore": 0.79,
      "transferBytes": 2212083,
      "co2Grams": 0.8474078525562,
      "greenWeb": {
        "page": {
          "hostname": "administracion.gob.es",
          "checked": true,
          "status": "not-green",
          "green": false,
          "hostedBy": null,
          "hostedByWebsite": null,
          "listedProvider": null,
          "partner": null,
          "modified": "2026-03-29T13:38:28.588564",
          "supportingDocuments": [],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/administracion.gob.es",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290037,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "not-green",
          "externalOriginCount": 1,
          "greenCount": 1,
          "notGreenCount": 1,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 70,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/buscador/buscadorsimple.htm|input|text|q|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "q",
            "formContext": "form|get|/buscador/buscadorsimple.htm",
            "hasLabel": false,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 70,
              "urgency": "high",
              "issues": [
                "Missing associated label",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add a programmatic label using <label>, aria-label, or aria-labelledby.",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "Missing associated label",
            "urgency": "high",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 35,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": false,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Conexión a servicios de telecomunicaciones - Conexión a servicios - Consumidores - Ciudadanos - Tus derechos y obligaciones en la UE - Tu espacio europeo - Punto de Acceso General",
          "lang": "es",
          "charset": "",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Derechos de los usuarios de telecomunicaciones, cómo presentar reclamaciones y más información útil.",
          "robots": "all",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 44,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 75,
          "tabletSmallTapTargets": 108,
          "fixedWidthOffenders": 7,
          "oversizedMedia": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 399,
            "viewportHeight": 864,
            "contentWidth": 399,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 7,
            "smallTapTargets": 75,
            "oversizedMedia": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 829,
            "viewportHeight": 1193,
            "contentWidth": 829,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 108,
            "oversizedMedia": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 75 small targets on mobile and 108 on tablet."
          },
          {
            "title": "Refactor fixed-width components",
            "urgency": "medium",
            "detail": "7 element(s) exceeded viewport width in tested layouts; use responsive component constraints."
          }
        ]
      },
      "securityLight": {
        "score": 33,
        "urgency": "medium",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": false,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 2,
          "externalScriptsWithoutIntegrity": 2,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "connection": "Keep-Alive",
            "content-encoding": "gzip",
            "content-type": "text/html;charset=UTF-8",
            "date": "Mon, 30 Mar 2026 00:21:38 GMT",
            "keep-alive": "timeout=15, max=500",
            "referrer-policy": "origin-when-cross-origin,strict-origin-when-cross-origin",
            "server": "Microsoft-IIS/5.0",
            "set-cookie": "VISITOR=returning; Path=/pag_Home/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/consumidores; HttpOnly; Secure; SameSite=None\nTS01a8e1d0=01d9c3d318362ec54be3a35cae5fd00ed67f28c82880529b1b9ba56384d07a19b66567890ae44783a444bdd5d48d6a967bacc4b9ad4bff902aea9909935fb9326af3d6d004faa92ebe7359ad7861723015378e0fc9; Path=/; HttpOnly; Secure; SameSite=None\nTS01e71884=01d9c3d3183d0ab5e35f0a4d3b0e06f02e6973180380529b1b9ba56384d07a19b66567890ae44783a444bdd5d48d6a967bacc4b9ad4bff902aea9909935fb9326af3d6d004f98a4d48eaff3a52021502918d296d1fe81761193e34385adc30c5a064c0078b; path=/pag_Home/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/consumidores; HttpOnly; Secure; SameSite=None",
            "strict-transport-security": "max-age=63072000; preload",
            "transfer-encoding": "chunked",
            "vary": "Accept-Encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1;mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add a Content-Security-Policy header",
            "urgency": "high",
            "detail": "Add an appropriate CSP to reduce script injection and resource loading risk."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "2 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 30,
        "urgency": "medium",
        "origin": "https://administracion.gob.es",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://administracion.gob.es/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/favicon.ico",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 2403496.2,
        "checks": {
          "hasEffectiveTextCompression": false
        },
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "estimatedSavingsBytes": 1313541,
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "estimatedSavingsBytes": 891965,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "estimatedSavingsBytes": 126680.2,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "estimatedSavingsBytes": 63759,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "estimatedSavingsBytes": 7551,
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings."
          }
        ],
        "recommendations": [
          {
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
          },
          {
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
          },
          {
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 7.37 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 4257642.2,
        "totalEstimatedBlockingMs": 9247,
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable text compression",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat.",
            "estimatedSavingsBytes": 1313541,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,283 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-text-compression"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 1195797,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,168 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 891965,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 871 KiB",
            "urgency": "high",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unused-javascript",
            "title": "Remove unused JavaScript",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code.",
            "estimatedSavingsBytes": 546704,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 534 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-javascript"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9247,
            "displayValue": "Est savings of 9,250 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 126680.2,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 124 KiB",
            "urgency": "medium",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "offscreen-images",
            "title": "Lazy-load offscreen images",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed.",
            "estimatedSavingsBytes": 104933,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 102 KiB",
            "urgency": "medium",
            "sourceAuditId": "offscreen-images"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 63759,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 62 KiB",
            "urgency": "medium",
            "sourceAuditId": "unminified-javascript"
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss.",
            "estimatedSavingsBytes": 7551,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-optimized-images"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 6712,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-responsive-images"
          }
        ],
        "recommendations": [
          {
            "title": "Enable text compression",
            "urgency": "high",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat. Estimated byte savings: 1.25 MB."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "high",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 1.14 MB."
          },
          {
            "title": "Minify CSS",
            "urgency": "high",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 871.06 KB."
          },
          {
            "title": "Remove unused JavaScript",
            "urgency": "high",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code. Estimated byte savings: 533.89 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 9247 ms."
          },
          {
            "title": "Serve images in next-gen formats",
            "urgency": "medium",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 123.71 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 4,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 2,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "2 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1902035
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.81 MB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.81 MB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 30,
        "urgency": "high",
        "transferBytes": 2212083,
        "css": {
          "unusedBytes": 1195797,
          "ratio": 0.5405751050028412,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 546704,
          "duplicatedBytes": 0,
          "ratio": 0.2471444335497357,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "high",
            "estimatedSavingsBytes": 1195797,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          },
          {
            "area": "javascript",
            "title": "Remove unused JavaScript and feature bundles",
            "urgency": "high",
            "estimatedSavingsBytes": 546704,
            "strategy": "Drop unused packages and feature code, or move them behind route-level or interaction-triggered imports.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 35,
        "urgency": "high",
        "transferBytes": 2212083,
        "estimatedDeferrableBytes": 1847434,
        "renderBlockingMs": 9247,
        "breakdown": {
          "offscreenImageSavings": 104933,
          "unusedJavascriptSavings": 546704,
          "unusedCssSavings": 1195797
        },
        "candidates": [
          {
            "title": "Lazy-load offscreen images",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 104933,
            "strategy": "Load below-the-fold images only when they approach the viewport.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Defer non-critical JavaScript",
            "area": "javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 546704,
            "strategy": "Split bundles and load feature code on interaction or route transition.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1195797,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9247,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy stylesheet from administracion.gob.es",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from administracion.gob.es",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 254411,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from administracion.gob.es",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 159817,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.googletagmanager.com",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 145365,
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 34,
        "urgency": "medium",
        "providerCount": 1,
        "requestCount": 2,
        "transferBytes": 290037,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290037,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "medium",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "medium",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          }
        ]
      },
      "redundancy": {
        "score": 68,
        "urgency": "high",
        "transferBytes": 2212083,
        "estimatedRedundantBytes": 1742501,
        "redundancyRatio": 0.7877195385525769,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 1195797,
            "displayValue": "Est savings of 1,168 KiB"
          },
          {
            "auditId": "unused-javascript",
            "title": "Reduce unused JavaScript",
            "savingsBytes": 546704,
            "displayValue": "Est savings of 534 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "high",
            "estimatedSavingsBytes": 1195797,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce unused javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 546704,
            "auditId": "unused-javascript",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Enable and verify text compression",
            "urgency": "medium",
            "estimatedSavingsBytes": 1313541,
            "auditId": "uses-text-compression",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 47,
        "urgency": "high",
        "totalTransferBytes": 2212083,
        "heavyRequestCount": 6,
        "heavyBytes": 1925242,
        "heavyRatio": 0.8703299107673627,
        "heavyRequests": [
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "transferSize": 1177193,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "transferSize": 254411,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "transferSize": 159817,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "transferSize": 145365,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-4YNNM3J1E0&cx=c&gtm=4e63p1",
            "transferSize": 144672,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/libs/jquery.mCustomScrollbar.css",
            "transferSize": 43784,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 1220977
          },
          {
            "resourceType": "script",
            "count": 3,
            "transferBytes": 544448
          },
          {
            "resourceType": "image",
            "count": 1,
            "transferBytes": 159817
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "administracion.gob.es",
            "count": 4,
            "transferBytes": 1635205
          },
          {
            "domain": "www.googletagmanager.com",
            "count": 2,
            "transferBytes": 290037
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Lazy-load offscreen images and media galleries",
            "urgency": "medium",
            "estimatedSavingsBytes": 104933,
            "strategy": "Load imagery only when it enters the viewport or when a user opens the relevant section.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Split JavaScript by route or interaction",
            "urgency": "high",
            "estimatedSavingsBytes": 546704,
            "strategy": "Move non-critical bundles behind route-level or event-driven imports so they are only fetched on demand.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy stylesheet asset from administracion.gob.es",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "strategy": "Split this stylesheet so component-specific CSS is delivered only when the component is rendered.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 254411,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 159817,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0,
          "displayValue": "12.3 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 12.3 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": 0.02,
          "displayValue": "13.2 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- Current value: 13.2 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": 0,
          "displayValue": "Est savings of 534 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- Current value: Est savings of 534 KiB\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 1,168 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 1,168 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 9,250 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 9,250 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": 0,
          "displayValue": "Est savings of 1,283 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- Current value: Est savings of 1,283 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 124 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 124 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 7 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- Current value: Est savings of 7 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 102 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- Current value: Est savings of 102 KiB\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/viajes/pasajeros/combinados-vinculados",
      "status": "ok",
      "finalUrl": "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/viajes/pasajeros/combinados-vinculados",
      "performanceScore": 0.55,
      "bestPracticesScore": 0.79,
      "transferBytes": 2200963,
      "co2Grams": 0.8431479873882,
      "greenWeb": {
        "page": {
          "hostname": "administracion.gob.es",
          "checked": true,
          "status": "not-green",
          "green": false,
          "hostedBy": null,
          "hostedByWebsite": null,
          "listedProvider": null,
          "partner": null,
          "modified": "2026-03-29T13:38:28.588564",
          "supportingDocuments": [],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/administracion.gob.es",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290044,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "not-green",
          "externalOriginCount": 1,
          "greenCount": 1,
          "notGreenCount": 1,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 70,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/buscador/buscadorsimple.htm|input|text|q|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "q",
            "formContext": "form|get|/buscador/buscadorsimple.htm",
            "hasLabel": false,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 70,
              "urgency": "high",
              "issues": [
                "Missing associated label",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add a programmatic label using <label>, aria-label, or aria-labelledby.",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "Missing associated label",
            "urgency": "high",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 35,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": false,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Derechos de los pasajeros: viajes combinados o vinculados - Derechos de los pasajeros - Viajar dentro de la UE - Ciudadanos - Tus derechos y obligaciones en la UE - Tu espacio europeo - Punto de Acceso General",
          "lang": "es",
          "charset": "",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Conoce qué es un servicio de viaje, qué es un viaje combinado o vinculado, las obligaciones de información y contenido, las modificaciones y terminación del contrato, la protección de los viajeros y la protección frente a la insolvencia",
          "robots": "all",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 40,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 45,
          "tabletSmallTapTargets": 73,
          "fixedWidthOffenders": 5,
          "oversizedMedia": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 399,
            "viewportHeight": 864,
            "contentWidth": 399,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 5,
            "smallTapTargets": 45,
            "oversizedMedia": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 829,
            "viewportHeight": 1193,
            "contentWidth": 829,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 73,
            "oversizedMedia": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 45 small targets on mobile and 73 on tablet."
          },
          {
            "title": "Refactor fixed-width components",
            "urgency": "medium",
            "detail": "5 element(s) exceeded viewport width in tested layouts; use responsive component constraints."
          }
        ]
      },
      "securityLight": {
        "score": 33,
        "urgency": "medium",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": false,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 2,
          "externalScriptsWithoutIntegrity": 2,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "connection": "Keep-Alive",
            "content-encoding": "gzip",
            "content-length": "16781",
            "content-type": "text/html;charset=UTF-8",
            "date": "Mon, 30 Mar 2026 00:22:04 GMT",
            "keep-alive": "timeout=15, max=500",
            "referrer-policy": "origin-when-cross-origin,strict-origin-when-cross-origin",
            "server": "Microsoft-IIS/5.0",
            "set-cookie": "VISITOR=returning; Path=/pag_Home/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/viajes; HttpOnly; Secure; SameSite=None\nTS01a8e1d0=01d9c3d318362ec54be3a35cae5fd00ed67f28c82880529b1b9ba56384d07a19b66567890ae44783a444bdd5d48d6a967bacc4b9ad4bff902aea9909935fb9326af3d6d004faa92ebe7359ad7861723015378e0fc9; Path=/; HttpOnly; Secure; SameSite=None\nTS014e315a=01d9c3d3183d0ab5e35f0a4d3b0e06f02e6973180380529b1b9ba56384d07a19b66567890ae44783a444bdd5d48d6a967bacc4b9ad4bff902aea9909935fb9326af3d6d004f98a4d48eaff3a52021502918d296d1fe81761193e34385adc30c5a064c0078b; path=/pag_Home/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/viajes; HttpOnly; Secure; SameSite=None",
            "strict-transport-security": "max-age=63072000; preload",
            "vary": "Accept-Encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1;mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add a Content-Security-Policy header",
            "urgency": "high",
            "detail": "Add an appropriate CSP to reduce script injection and resource loading risk."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "2 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 30,
        "urgency": "medium",
        "origin": "https://administracion.gob.es",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://administracion.gob.es/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/favicon.ico",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 2403496.2,
        "checks": {
          "hasEffectiveTextCompression": false
        },
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "estimatedSavingsBytes": 1313541,
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "estimatedSavingsBytes": 891965,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "estimatedSavingsBytes": 126680.2,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "estimatedSavingsBytes": 63759,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "estimatedSavingsBytes": 7551,
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings."
          }
        ],
        "recommendations": [
          {
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
          },
          {
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
          },
          {
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 7.37 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 4249900.2,
        "totalEstimatedBlockingMs": 9299,
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable text compression",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat.",
            "estimatedSavingsBytes": 1313541,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,283 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-text-compression"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 1195820,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,168 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 891965,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 871 KiB",
            "urgency": "high",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unused-javascript",
            "title": "Remove unused JavaScript",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code.",
            "estimatedSavingsBytes": 547250,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 534 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-javascript"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9299,
            "displayValue": "Est savings of 9,300 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 126680.2,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 124 KiB",
            "urgency": "medium",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "offscreen-images",
            "title": "Lazy-load offscreen images",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed.",
            "estimatedSavingsBytes": 96622,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 94 KiB",
            "urgency": "medium",
            "sourceAuditId": "offscreen-images"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 63759,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 62 KiB",
            "urgency": "medium",
            "sourceAuditId": "unminified-javascript"
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss.",
            "estimatedSavingsBytes": 7551,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-optimized-images"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 6712,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-responsive-images"
          }
        ],
        "recommendations": [
          {
            "title": "Enable text compression",
            "urgency": "high",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat. Estimated byte savings: 1.25 MB."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "high",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 1.14 MB."
          },
          {
            "title": "Minify CSS",
            "urgency": "high",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 871.06 KB."
          },
          {
            "title": "Remove unused JavaScript",
            "urgency": "high",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code. Estimated byte savings: 534.42 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 9299 ms."
          },
          {
            "title": "Serve images in next-gen formats",
            "urgency": "medium",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 123.71 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 4,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 2,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "2 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1891190
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.80 MB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.80 MB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 30,
        "urgency": "high",
        "transferBytes": 2200963,
        "css": {
          "unusedBytes": 1195820,
          "ratio": 0.5433167209080753,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 547250,
          "duplicatedBytes": 0,
          "ratio": 0.24864116298184022,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "high",
            "estimatedSavingsBytes": 1195820,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          },
          {
            "area": "javascript",
            "title": "Remove unused JavaScript and feature bundles",
            "urgency": "high",
            "estimatedSavingsBytes": 547250,
            "strategy": "Drop unused packages and feature code, or move them behind route-level or interaction-triggered imports.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 35,
        "urgency": "high",
        "transferBytes": 2200963,
        "estimatedDeferrableBytes": 1839692,
        "renderBlockingMs": 9299,
        "breakdown": {
          "offscreenImageSavings": 96622,
          "unusedJavascriptSavings": 547250,
          "unusedCssSavings": 1195820
        },
        "candidates": [
          {
            "title": "Lazy-load offscreen images",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 96622,
            "strategy": "Load below-the-fold images only when they approach the viewport.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Defer non-critical JavaScript",
            "area": "javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 547250,
            "strategy": "Split bundles and load feature code on interaction or route transition.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1195820,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9299,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy stylesheet from administracion.gob.es",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from administracion.gob.es",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 254522,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from administracion.gob.es",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.googletagmanager.com",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 145369,
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 34,
        "urgency": "medium",
        "providerCount": 1,
        "requestCount": 2,
        "transferBytes": 290044,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290044,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "medium",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "medium",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          }
        ]
      },
      "redundancy": {
        "score": 69,
        "urgency": "high",
        "transferBytes": 2200963,
        "estimatedRedundantBytes": 1743070,
        "redundancyRatio": 0.7919578838899155,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 1195820,
            "displayValue": "Est savings of 1,168 KiB"
          },
          {
            "auditId": "unused-javascript",
            "title": "Reduce unused JavaScript",
            "savingsBytes": 547250,
            "displayValue": "Est savings of 534 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "high",
            "estimatedSavingsBytes": 1195820,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce unused javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 547250,
            "auditId": "unused-javascript",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Enable and verify text compression",
            "urgency": "medium",
            "estimatedSavingsBytes": 1313541,
            "auditId": "uses-text-compression",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 47,
        "urgency": "high",
        "totalTransferBytes": 2200963,
        "heavyRequestCount": 6,
        "heavyBytes": 1925366,
        "heavyRatio": 0.8747834470638534,
        "heavyRequests": [
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "transferSize": 1177193,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "transferSize": 254522,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "transferSize": 159823,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "transferSize": 145369,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-4YNNM3J1E0&cx=c&gtm=4e63p1",
            "transferSize": 144675,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/libs/jquery.mCustomScrollbar.css",
            "transferSize": 43784,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 1220977
          },
          {
            "resourceType": "script",
            "count": 3,
            "transferBytes": 544566
          },
          {
            "resourceType": "image",
            "count": 1,
            "transferBytes": 159823
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "administracion.gob.es",
            "count": 4,
            "transferBytes": 1635322
          },
          {
            "domain": "www.googletagmanager.com",
            "count": 2,
            "transferBytes": 290044
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Lazy-load offscreen images and media galleries",
            "urgency": "medium",
            "estimatedSavingsBytes": 96622,
            "strategy": "Load imagery only when it enters the viewport or when a user opens the relevant section.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Split JavaScript by route or interaction",
            "urgency": "high",
            "estimatedSavingsBytes": 547250,
            "strategy": "Move non-critical bundles behind route-level or event-driven imports so they are only fetched on demand.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy stylesheet asset from administracion.gob.es",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "strategy": "Split this stylesheet so component-specific CSS is delivered only when the component is rendered.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 254522,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0,
          "displayValue": "12.5 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 12.5 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": 0.01,
          "displayValue": "14.9 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- Current value: 14.9 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": 0,
          "displayValue": "Est savings of 534 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- Current value: Est savings of 534 KiB\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 1,168 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 1,168 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 9,300 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 9,300 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": 0,
          "displayValue": "Est savings of 1,283 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- Current value: Est savings of 1,283 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 124 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 124 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 7 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- Current value: Est savings of 7 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 94 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- Current value: Est savings of 94 KiB\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/vehiculos/compraventa",
      "status": "ok",
      "finalUrl": "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/vehiculos/compraventa",
      "performanceScore": 0.55,
      "bestPracticesScore": 0.75,
      "transferBytes": 2191778,
      "co2Grams": 0.8396293847292001,
      "greenWeb": {
        "page": {
          "hostname": "administracion.gob.es",
          "checked": true,
          "status": "not-green",
          "green": false,
          "hostedBy": null,
          "hostedByWebsite": null,
          "listedProvider": null,
          "partner": null,
          "modified": "2026-03-29T13:38:28.588564",
          "supportingDocuments": [],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/administracion.gob.es",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290047,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "not-green",
          "externalOriginCount": 1,
          "greenCount": 1,
          "notGreenCount": 1,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 70,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/buscador/buscadorsimple.htm|input|text|q|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "q",
            "formContext": "form|get|/buscador/buscadorsimple.htm",
            "hasLabel": false,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 70,
              "urgency": "high",
              "issues": [
                "Missing associated label",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add a programmatic label using <label>, aria-label, or aria-labelledby.",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "Missing associated label",
            "urgency": "high",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 35,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": false,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Compraventa de vehículos: Paso a paso - Vehículos - Ciudadanos - Tus derechos y obligaciones en la UE - Tu espacio europeo - Punto de Acceso General",
          "lang": "es",
          "charset": "",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Conoce la tramitación para importar un vehículo de la Unión Europea a España y para exportar un vehículo español a un país dela Unión Europea",
          "robots": "all",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 34,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 30,
          "tabletSmallTapTargets": 60,
          "fixedWidthOffenders": 2,
          "oversizedMedia": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 399,
            "viewportHeight": 864,
            "contentWidth": 399,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 2,
            "smallTapTargets": 30,
            "oversizedMedia": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 829,
            "viewportHeight": 1193,
            "contentWidth": 829,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 60,
            "oversizedMedia": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 30 small targets on mobile and 60 on tablet."
          },
          {
            "title": "Refactor fixed-width components",
            "urgency": "medium",
            "detail": "2 element(s) exceeded viewport width in tested layouts; use responsive component constraints."
          }
        ]
      },
      "securityLight": {
        "score": 31,
        "urgency": "medium",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": false,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "connection": "Keep-Alive",
            "content-encoding": "gzip",
            "content-type": "text/html;charset=UTF-8",
            "date": "Mon, 30 Mar 2026 00:22:27 GMT",
            "keep-alive": "timeout=15, max=500",
            "referrer-policy": "origin-when-cross-origin,strict-origin-when-cross-origin",
            "server": "Microsoft-IIS/5.0",
            "set-cookie": "VISITOR=returning; Path=/pag_Home/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/vehiculos; HttpOnly; Secure; SameSite=None\nTS01a8e1d0=01d9c3d318362ec54be3a35cae5fd00ed67f28c82880529b1b9ba56384d07a19b66567890ae44783a444bdd5d48d6a967bacc4b9ad4bff902aea9909935fb9326af3d6d004faa92ebe7359ad7861723015378e0fc9; Path=/; HttpOnly; Secure; SameSite=None\nTS0161dfd2=01d9c3d3183d0ab5e35f0a4d3b0e06f02e6973180380529b1b9ba56384d07a19b66567890ae44783a444bdd5d48d6a967bacc4b9ad4bff902aea9909935fb9326af3d6d004f98a4d48eaff3a52021502918d296d1fe81761193e34385adc30c5a064c0078b; path=/pag_Home/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/vehiculos; HttpOnly; Secure; SameSite=None",
            "strict-transport-security": "max-age=63072000; preload",
            "transfer-encoding": "chunked",
            "vary": "Accept-Encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1;mode=block",
            "traceresponse": "00-8ba8848932ea9de4a4e29ac6070b4e99-9b3506875b691554-01",
            "x-dt-tracestate": "acd5d8fe-344161ca@dt"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add a Content-Security-Policy header",
            "urgency": "high",
            "detail": "Add an appropriate CSP to reduce script injection and resource loading risk."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 30,
        "urgency": "medium",
        "origin": "https://administracion.gob.es",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://administracion.gob.es/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/favicon.ico",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 2403496.2,
        "checks": {
          "hasEffectiveTextCompression": false
        },
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "estimatedSavingsBytes": 1313541,
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "estimatedSavingsBytes": 891965,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "estimatedSavingsBytes": 126680.2,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "estimatedSavingsBytes": 63759,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "estimatedSavingsBytes": 7551,
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings."
          }
        ],
        "recommendations": [
          {
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
          },
          {
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
          },
          {
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 7.37 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 4229385.2,
        "totalEstimatedBlockingMs": 9251,
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable text compression",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat.",
            "estimatedSavingsBytes": 1313541,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,283 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-text-compression"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 1197079,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,169 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 891965,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 871 KiB",
            "urgency": "high",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unused-javascript",
            "title": "Remove unused JavaScript",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code.",
            "estimatedSavingsBytes": 530983,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 519 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-javascript"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9251,
            "displayValue": "Est savings of 9,250 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 126680.2,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 124 KiB",
            "urgency": "medium",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "offscreen-images",
            "title": "Lazy-load offscreen images",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed.",
            "estimatedSavingsBytes": 91115,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 89 KiB",
            "urgency": "medium",
            "sourceAuditId": "offscreen-images"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 63759,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 62 KiB",
            "urgency": "medium",
            "sourceAuditId": "unminified-javascript"
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss.",
            "estimatedSavingsBytes": 7551,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-optimized-images"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 6712,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-responsive-images"
          }
        ],
        "recommendations": [
          {
            "title": "Enable text compression",
            "urgency": "high",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat. Estimated byte savings: 1.25 MB."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "high",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 1.14 MB."
          },
          {
            "title": "Minify CSS",
            "urgency": "high",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 871.06 KB."
          },
          {
            "title": "Remove unused JavaScript",
            "urgency": "high",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code. Estimated byte savings: 518.54 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 9251 ms."
          },
          {
            "title": "Serve images in next-gen formats",
            "urgency": "medium",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 123.71 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1883351
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.80 MB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.80 MB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 30,
        "urgency": "high",
        "transferBytes": 2191778,
        "css": {
          "unusedBytes": 1197079,
          "ratio": 0.546167996941296,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 530983,
          "duplicatedBytes": 0,
          "ratio": 0.24226130566143103,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "high",
            "estimatedSavingsBytes": 1197079,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          },
          {
            "area": "javascript",
            "title": "Remove unused JavaScript and feature bundles",
            "urgency": "high",
            "estimatedSavingsBytes": 530983,
            "strategy": "Drop unused packages and feature code, or move them behind route-level or interaction-triggered imports.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 35,
        "urgency": "high",
        "transferBytes": 2191778,
        "estimatedDeferrableBytes": 1819177,
        "renderBlockingMs": 9251,
        "breakdown": {
          "offscreenImageSavings": 91115,
          "unusedJavascriptSavings": 530983,
          "unusedCssSavings": 1197079
        },
        "candidates": [
          {
            "title": "Lazy-load offscreen images",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 91115,
            "strategy": "Load below-the-fold images only when they approach the viewport.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Defer non-critical JavaScript",
            "area": "javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 530983,
            "strategy": "Split bundles and load feature code on interaction or route transition.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1197079,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9251,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy stylesheet from administracion.gob.es",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from administracion.gob.es",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 254411,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from administracion.gob.es",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.googletagmanager.com",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 145371,
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 34,
        "urgency": "medium",
        "providerCount": 1,
        "requestCount": 2,
        "transferBytes": 290047,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290047,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "medium",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "medium",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          }
        ]
      },
      "redundancy": {
        "score": 66,
        "urgency": "high",
        "transferBytes": 2191778,
        "estimatedRedundantBytes": 1728062,
        "redundancyRatio": 0.7884293026027271,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 1197079,
            "displayValue": "Est savings of 1,169 KiB"
          },
          {
            "auditId": "unused-javascript",
            "title": "Reduce unused JavaScript",
            "savingsBytes": 530983,
            "displayValue": "Est savings of 519 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "high",
            "estimatedSavingsBytes": 1197079,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce unused javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 530983,
            "auditId": "unused-javascript",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Enable and verify text compression",
            "urgency": "medium",
            "estimatedSavingsBytes": 1313541,
            "auditId": "uses-text-compression",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 47,
        "urgency": "high",
        "totalTransferBytes": 2191778,
        "heavyRequestCount": 6,
        "heavyBytes": 1925258,
        "heavyRatio": 0.8784000934401203,
        "heavyRequests": [
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "transferSize": 1177193,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "transferSize": 254411,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "transferSize": 159823,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "transferSize": 145371,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-4YNNM3J1E0&cx=c&gtm=4e63p1",
            "transferSize": 144676,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/libs/jquery.mCustomScrollbar.css",
            "transferSize": 43784,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 1220977
          },
          {
            "resourceType": "script",
            "count": 3,
            "transferBytes": 544458
          },
          {
            "resourceType": "image",
            "count": 1,
            "transferBytes": 159823
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "administracion.gob.es",
            "count": 4,
            "transferBytes": 1635211
          },
          {
            "domain": "www.googletagmanager.com",
            "count": 2,
            "transferBytes": 290047
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Lazy-load offscreen images and media galleries",
            "urgency": "medium",
            "estimatedSavingsBytes": 91115,
            "strategy": "Load imagery only when it enters the viewport or when a user opens the relevant section.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Split JavaScript by route or interaction",
            "urgency": "high",
            "estimatedSavingsBytes": 530983,
            "strategy": "Move non-critical bundles behind route-level or event-driven imports so they are only fetched on demand.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy stylesheet asset from administracion.gob.es",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "strategy": "Split this stylesheet so component-specific CSS is delivered only when the component is rendered.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 254411,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0,
          "displayValue": "11.9 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 11.9 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": 0.04,
          "displayValue": "11.7 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- Current value: 11.7 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": 0,
          "displayValue": "Est savings of 519 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- Current value: Est savings of 519 KiB\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 1,169 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 1,169 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 9,250 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 9,250 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": 0,
          "displayValue": "Est savings of 1,283 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- Current value: Est savings of 1,283 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 124 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 124 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 7 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- Current value: Est savings of 7 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 89 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- Current value: Est savings of 89 KiB\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://administracion.gob.es/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/asistencia-sanitaria/estancia-TSE",
      "status": "ok",
      "finalUrl": "https://administracion.gob.es/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/asistencia-sanitaria/estancia-TSE",
      "performanceScore": 0.55,
      "bestPracticesScore": 0.79,
      "transferBytes": 2200860,
      "co2Grams": 0.843108530004,
      "greenWeb": {
        "page": {
          "hostname": "administracion.gob.es",
          "checked": true,
          "status": "not-green",
          "green": false,
          "hostedBy": null,
          "hostedByWebsite": null,
          "listedProvider": null,
          "partner": null,
          "modified": "2026-03-29T13:38:28.588564",
          "supportingDocuments": [],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/administracion.gob.es",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290047,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "not-green",
          "externalOriginCount": 1,
          "greenCount": 1,
          "notGreenCount": 1,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 70,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/buscador/buscadorsimple.htm|input|text|q|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "q",
            "formContext": "form|get|/buscador/buscadorsimple.htm",
            "hasLabel": false,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 70,
              "urgency": "high",
              "issues": [
                "Missing associated label",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add a programmatic label using <label>, aria-label, or aria-labelledby.",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "Missing associated label",
            "urgency": "high",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 25,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": true,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": false,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Asistencia sanitaria durante la estancia en otro país de la UE y Tarjeta Sanitaria Europea (TSE) - Asistencia sanitaria - Ciudadanos - Tus derechos y obligaciones en la UE - Tu espacio europeo - Punto de Acceso General",
          "lang": "eu",
          "charset": "",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Derechos y obligaciones a la asistencia sanitaria durante la estancia en otro país de la UE. Qué es y cómo solicitar la tarjeta sanitaria europea.",
          "robots": "all",
          "canonical": "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/asistencia-sanitaria/estancia-TSE",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 38,
          "tabletSmallTapTargets": 69,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 399,
            "viewportHeight": 864,
            "contentWidth": 399,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 38,
            "oversizedMedia": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 829,
            "viewportHeight": 1193,
            "contentWidth": 829,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 69,
            "oversizedMedia": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 38 small targets on mobile and 69 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 31,
        "urgency": "medium",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": false,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "connection": "Keep-Alive",
            "content-encoding": "gzip",
            "content-type": "text/html;charset=UTF-8",
            "date": "Mon, 30 Mar 2026 00:22:51 GMT",
            "keep-alive": "timeout=15, max=500",
            "referrer-policy": "origin-when-cross-origin,strict-origin-when-cross-origin",
            "server": "Microsoft-IIS/5.0",
            "set-cookie": "VISITOR=returning; Path=/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/ciudadanos; HttpOnly; Secure; SameSite=None\nTS01a8e1d0=01d9c3d318362ec54be3a35cae5fd00ed67f28c82880529b1b9ba56384d07a19b66567890ae44783a444bdd5d48d6a967bacc4b9ad4bff902aea9909935fb9326af3d6d004faa92ebe7359ad7861723015378e0fc9; Path=/; HttpOnly; Secure; SameSite=None\nTS011d349b=01d9c3d3183d0ab5e35f0a4d3b0e06f02e6973180380529b1b9ba56384d07a19b66567890ae44783a444bdd5d48d6a967bacc4b9ad4bff902aea9909935fb9326af3d6d004f98a4d48eaff3a52021502918d296d1fe81761193e34385adc30c5a064c0078b; path=/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/ciudadanos; HttpOnly; Secure; SameSite=None",
            "strict-transport-security": "max-age=63072000; preload",
            "transfer-encoding": "chunked",
            "vary": "Accept-Encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1;mode=block",
            "traceresponse": "00-afd4316bcbc5189a63814c09e6194747-1295137a174b322f-01",
            "x-dt-tracestate": "acd5d8fe-344161ca@dt"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add a Content-Security-Policy header",
            "urgency": "high",
            "detail": "Add an appropriate CSP to reduce script injection and resource loading risk."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 30,
        "urgency": "medium",
        "origin": "https://administracion.gob.es",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://administracion.gob.es/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/favicon.ico",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 2397750.2,
        "checks": {
          "hasEffectiveTextCompression": false
        },
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "estimatedSavingsBytes": 1307795,
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "estimatedSavingsBytes": 891965,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "estimatedSavingsBytes": 126680.2,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "estimatedSavingsBytes": 63759,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "estimatedSavingsBytes": 7551,
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings."
          }
        ],
        "recommendations": [
          {
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
          },
          {
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
          },
          {
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 7.37 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 4249462.2,
        "totalEstimatedBlockingMs": 9331,
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable text compression",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat.",
            "estimatedSavingsBytes": 1307795,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,277 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-text-compression"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 1195718,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,168 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 891965,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 871 KiB",
            "urgency": "high",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unused-javascript",
            "title": "Remove unused JavaScript",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code.",
            "estimatedSavingsBytes": 546397,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 534 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-javascript"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9331,
            "displayValue": "Est savings of 9,330 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 126680.2,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 124 KiB",
            "urgency": "medium",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "offscreen-images",
            "title": "Lazy-load offscreen images",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed.",
            "estimatedSavingsBytes": 102885,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 100 KiB",
            "urgency": "medium",
            "sourceAuditId": "offscreen-images"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 63759,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 62 KiB",
            "urgency": "medium",
            "sourceAuditId": "unminified-javascript"
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss.",
            "estimatedSavingsBytes": 7551,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-optimized-images"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 6712,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-responsive-images"
          }
        ],
        "recommendations": [
          {
            "title": "Enable text compression",
            "urgency": "high",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat. Estimated byte savings: 1.25 MB."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "high",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 1.14 MB."
          },
          {
            "title": "Minify CSS",
            "urgency": "high",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 871.06 KB."
          },
          {
            "title": "Remove unused JavaScript",
            "urgency": "high",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code. Estimated byte savings: 533.59 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 9331 ms."
          },
          {
            "title": "Serve images in next-gen formats",
            "urgency": "medium",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 123.71 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1892900
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.81 MB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.81 MB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 30,
        "urgency": "high",
        "transferBytes": 2200860,
        "css": {
          "unusedBytes": 1195718,
          "ratio": 0.5432958025499123,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 546397,
          "duplicatedBytes": 0,
          "ratio": 0.24826522359441308,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "high",
            "estimatedSavingsBytes": 1195718,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          },
          {
            "area": "javascript",
            "title": "Remove unused JavaScript and feature bundles",
            "urgency": "high",
            "estimatedSavingsBytes": 546397,
            "strategy": "Drop unused packages and feature code, or move them behind route-level or interaction-triggered imports.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 35,
        "urgency": "high",
        "transferBytes": 2200860,
        "estimatedDeferrableBytes": 1845000,
        "renderBlockingMs": 9331,
        "breakdown": {
          "offscreenImageSavings": 102885,
          "unusedJavascriptSavings": 546397,
          "unusedCssSavings": 1195718
        },
        "candidates": [
          {
            "title": "Lazy-load offscreen images",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 102885,
            "strategy": "Load below-the-fold images only when they approach the viewport.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Defer non-critical JavaScript",
            "area": "javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 546397,
            "strategy": "Split bundles and load feature code on interaction or route transition.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1195718,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9331,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy stylesheet from administracion.gob.es",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from administracion.gob.es",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 254418,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from administracion.gob.es",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.googletagmanager.com",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 145371,
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 34,
        "urgency": "medium",
        "providerCount": 1,
        "requestCount": 2,
        "transferBytes": 290047,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290047,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "medium",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "medium",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          }
        ]
      },
      "redundancy": {
        "score": 69,
        "urgency": "high",
        "transferBytes": 2200860,
        "estimatedRedundantBytes": 1742115,
        "redundancyRatio": 0.7915610261443254,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 1195718,
            "displayValue": "Est savings of 1,168 KiB"
          },
          {
            "auditId": "unused-javascript",
            "title": "Reduce unused JavaScript",
            "savingsBytes": 546397,
            "displayValue": "Est savings of 534 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "high",
            "estimatedSavingsBytes": 1195718,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce unused javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 546397,
            "auditId": "unused-javascript",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Enable and verify text compression",
            "urgency": "medium",
            "estimatedSavingsBytes": 1307795,
            "auditId": "uses-text-compression",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 47,
        "urgency": "high",
        "totalTransferBytes": 2200860,
        "heavyRequestCount": 6,
        "heavyBytes": 1925265,
        "heavyRatio": 0.8747784956789618,
        "heavyRequests": [
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "transferSize": 1177193,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "transferSize": 254418,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "transferSize": 159823,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "transferSize": 145371,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-4YNNM3J1E0&cx=c&gtm=4e63p1",
            "transferSize": 144676,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/libs/jquery.mCustomScrollbar.css",
            "transferSize": 43784,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 1220977
          },
          {
            "resourceType": "script",
            "count": 3,
            "transferBytes": 544465
          },
          {
            "resourceType": "image",
            "count": 1,
            "transferBytes": 159823
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "administracion.gob.es",
            "count": 4,
            "transferBytes": 1635218
          },
          {
            "domain": "www.googletagmanager.com",
            "count": 2,
            "transferBytes": 290047
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Lazy-load offscreen images and media galleries",
            "urgency": "medium",
            "estimatedSavingsBytes": 102885,
            "strategy": "Load imagery only when it enters the viewport or when a user opens the relevant section.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Split JavaScript by route or interaction",
            "urgency": "high",
            "estimatedSavingsBytes": 546397,
            "strategy": "Move non-critical bundles behind route-level or event-driven imports so they are only fetched on demand.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy stylesheet asset from administracion.gob.es",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "strategy": "Split this stylesheet so component-specific CSS is delivered only when the component is rendered.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 254418,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0,
          "displayValue": "12.0 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 12.0 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": 0.03,
          "displayValue": "12.3 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- Current value: 12.3 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": 0,
          "displayValue": "Est savings of 534 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- Current value: Est savings of 534 KiB\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 1,168 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 1,168 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 9,330 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 9,330 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": 0,
          "displayValue": "Est savings of 1,277 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- Current value: Est savings of 1,277 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 124 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 124 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 7 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- Current value: Est savings of 7 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 100 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- Current value: Est savings of 100 KiB\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://administracion.gob.es/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/viajes/transporte-animales",
      "status": "ok",
      "finalUrl": "https://administracion.gob.es/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/viajes/transporte-animales",
      "performanceScore": 0.56,
      "bestPracticesScore": 0.79,
      "transferBytes": 2195560,
      "co2Grams": 0.841078198584,
      "greenWeb": {
        "page": {
          "hostname": "administracion.gob.es",
          "checked": true,
          "status": "not-green",
          "green": false,
          "hostedBy": null,
          "hostedByWebsite": null,
          "listedProvider": null,
          "partner": null,
          "modified": "2026-03-29T13:38:28.588564",
          "supportingDocuments": [],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/administracion.gob.es",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290039,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "not-green",
          "externalOriginCount": 1,
          "greenCount": 1,
          "notGreenCount": 1,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 70,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/buscador/buscadorsimple.htm|input|text|q|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "q",
            "formContext": "form|get|/buscador/buscadorsimple.htm",
            "hasLabel": false,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 70,
              "urgency": "high",
              "issues": [
                "Missing associated label",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add a programmatic label using <label>, aria-label, or aria-labelledby.",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "Missing associated label",
            "urgency": "high",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 35,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": false,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Transporting animals when travelling within the EU - Travel within the EU - Citizens - Your rights and obligations in the EU - Tu espacio europeo - Punto de Acceso General",
          "lang": "en",
          "charset": "",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Information you need to know when travelling with your pet within the EU",
          "robots": "all",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 32,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 36,
          "tabletSmallTapTargets": 69,
          "fixedWidthOffenders": 1,
          "oversizedMedia": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 399,
            "viewportHeight": 864,
            "contentWidth": 399,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 1,
            "smallTapTargets": 36,
            "oversizedMedia": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 829,
            "viewportHeight": 1193,
            "contentWidth": 829,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 69,
            "oversizedMedia": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 36 small targets on mobile and 69 on tablet."
          },
          {
            "title": "Refactor fixed-width components",
            "urgency": "medium",
            "detail": "1 element(s) exceeded viewport width in tested layouts; use responsive component constraints."
          }
        ]
      },
      "securityLight": {
        "score": 31,
        "urgency": "medium",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": false,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "connection": "Keep-Alive",
            "content-encoding": "gzip",
            "content-type": "text/html;charset=UTF-8",
            "date": "Mon, 30 Mar 2026 00:23:12 GMT",
            "keep-alive": "timeout=15, max=500",
            "referrer-policy": "origin-when-cross-origin,strict-origin-when-cross-origin",
            "server": "Microsoft-IIS/5.0",
            "set-cookie": "VISITOR=returning; Path=/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/ciudadanos; HttpOnly; Secure; SameSite=None\nTS01a8e1d0=01d9c3d318362ec54be3a35cae5fd00ed67f28c82880529b1b9ba56384d07a19b66567890ae44783a444bdd5d48d6a967bacc4b9ad4bff902aea9909935fb9326af3d6d004faa92ebe7359ad7861723015378e0fc9; Path=/; HttpOnly; Secure; SameSite=None\nTS01cc21ed=01d9c3d31875eb4ee065abf109a5ef141663ea9e5662999d88da62791f603954b0657e3ad206abe0e840a1f31af532847905d0382b90b7a84781f287b0f8ea376c270e95758790e5f992ab8a462f1118463bf9b8565956db104bfe20987b3f54c98e7c3998; path=/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/ciudadanos; HttpOnly; Secure; SameSite=None",
            "strict-transport-security": "max-age=63072000; preload",
            "transfer-encoding": "chunked",
            "vary": "Accept-Encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1;mode=block",
            "traceresponse": "00-f1f745b0abf51a3ab3bcf2ec548a122f-e626bf8eb8772bbb-01",
            "x-dt-tracestate": "acd5d8fe-344161ca@dt"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add a Content-Security-Policy header",
            "urgency": "high",
            "detail": "Add an appropriate CSP to reduce script injection and resource loading risk."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 30,
        "urgency": "medium",
        "origin": "https://administracion.gob.es",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://administracion.gob.es/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/favicon.ico",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 2403496.2,
        "checks": {
          "hasEffectiveTextCompression": false
        },
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "estimatedSavingsBytes": 1313541,
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "estimatedSavingsBytes": 891965,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "estimatedSavingsBytes": 126680.2,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "estimatedSavingsBytes": 63759,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "estimatedSavingsBytes": 7551,
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings."
          }
        ],
        "recommendations": [
          {
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
          },
          {
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
          },
          {
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 7.37 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 4246554.2,
        "totalEstimatedBlockingMs": 9230,
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable text compression",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat.",
            "estimatedSavingsBytes": 1313541,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,283 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-text-compression"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 1195727,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,168 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 891965,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 871 KiB",
            "urgency": "high",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unused-javascript",
            "title": "Remove unused JavaScript",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code.",
            "estimatedSavingsBytes": 547289,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 534 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-javascript"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9230,
            "displayValue": "Est savings of 9,230 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 126680.2,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 124 KiB",
            "urgency": "medium",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "offscreen-images",
            "title": "Lazy-load offscreen images",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed.",
            "estimatedSavingsBytes": 93330,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 91 KiB",
            "urgency": "medium",
            "sourceAuditId": "offscreen-images"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 63759,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 62 KiB",
            "urgency": "medium",
            "sourceAuditId": "unminified-javascript"
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss.",
            "estimatedSavingsBytes": 7551,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-optimized-images"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 6712,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-responsive-images"
          }
        ],
        "recommendations": [
          {
            "title": "Enable text compression",
            "urgency": "high",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat. Estimated byte savings: 1.25 MB."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "high",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 1.14 MB."
          },
          {
            "title": "Minify CSS",
            "urgency": "high",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 871.06 KB."
          },
          {
            "title": "Remove unused JavaScript",
            "urgency": "high",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code. Estimated byte savings: 534.46 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 9230 ms."
          },
          {
            "title": "Serve images in next-gen formats",
            "urgency": "medium",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 123.71 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1887527
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.80 MB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.80 MB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 30,
        "urgency": "high",
        "transferBytes": 2195560,
        "css": {
          "unusedBytes": 1195727,
          "ratio": 0.5446113975477782,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 547289,
          "duplicatedBytes": 0,
          "ratio": 0.24927080107125288,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "high",
            "estimatedSavingsBytes": 1195727,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          },
          {
            "area": "javascript",
            "title": "Remove unused JavaScript and feature bundles",
            "urgency": "high",
            "estimatedSavingsBytes": 547289,
            "strategy": "Drop unused packages and feature code, or move them behind route-level or interaction-triggered imports.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 35,
        "urgency": "high",
        "transferBytes": 2195560,
        "estimatedDeferrableBytes": 1836346,
        "renderBlockingMs": 9230,
        "breakdown": {
          "offscreenImageSavings": 93330,
          "unusedJavascriptSavings": 547289,
          "unusedCssSavings": 1195727
        },
        "candidates": [
          {
            "title": "Lazy-load offscreen images",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 93330,
            "strategy": "Load below-the-fold images only when they approach the viewport.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Defer non-critical JavaScript",
            "area": "javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 547289,
            "strategy": "Split bundles and load feature code on interaction or route transition.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1195727,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9230,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy stylesheet from administracion.gob.es",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from administracion.gob.es",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 254417,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from administracion.gob.es",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.googletagmanager.com",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 145368,
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 34,
        "urgency": "medium",
        "providerCount": 1,
        "requestCount": 2,
        "transferBytes": 290039,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290039,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "medium",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "medium",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          }
        ]
      },
      "redundancy": {
        "score": 66,
        "urgency": "high",
        "transferBytes": 2195560,
        "estimatedRedundantBytes": 1743016,
        "redundancyRatio": 0.7938821986190311,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 1195727,
            "displayValue": "Est savings of 1,168 KiB"
          },
          {
            "auditId": "unused-javascript",
            "title": "Reduce unused JavaScript",
            "savingsBytes": 547289,
            "displayValue": "Est savings of 534 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "high",
            "estimatedSavingsBytes": 1195727,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce unused javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 547289,
            "auditId": "unused-javascript",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Enable and verify text compression",
            "urgency": "medium",
            "estimatedSavingsBytes": 1313541,
            "auditId": "uses-text-compression",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 47,
        "urgency": "high",
        "totalTransferBytes": 2195560,
        "heavyRequestCount": 6,
        "heavyBytes": 1925256,
        "heavyRatio": 0.8768860791779773,
        "heavyRequests": [
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "transferSize": 1177193,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "transferSize": 254417,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "transferSize": 159823,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "transferSize": 145368,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-4YNNM3J1E0&cx=c&gtm=4e63p1h1",
            "transferSize": 144671,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/libs/jquery.mCustomScrollbar.css",
            "transferSize": 43784,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 1220977
          },
          {
            "resourceType": "script",
            "count": 3,
            "transferBytes": 544456
          },
          {
            "resourceType": "image",
            "count": 1,
            "transferBytes": 159823
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "administracion.gob.es",
            "count": 4,
            "transferBytes": 1635217
          },
          {
            "domain": "www.googletagmanager.com",
            "count": 2,
            "transferBytes": 290039
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Lazy-load offscreen images and media galleries",
            "urgency": "medium",
            "estimatedSavingsBytes": 93330,
            "strategy": "Load imagery only when it enters the viewport or when a user opens the relevant section.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Split JavaScript by route or interaction",
            "urgency": "high",
            "estimatedSavingsBytes": 547289,
            "strategy": "Move non-critical bundles behind route-level or event-driven imports so they are only fetched on demand.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy stylesheet asset from administracion.gob.es",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "strategy": "Split this stylesheet so component-specific CSS is delivered only when the component is rendered.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 254417,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0,
          "displayValue": "11.7 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 11.7 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": 0.06,
          "displayValue": "10.8 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- Current value: 10.8 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": 0,
          "displayValue": "Est savings of 534 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- Current value: Est savings of 534 KiB\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 1,168 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 1,168 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 9,230 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 9,230 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": 0,
          "displayValue": "Est savings of 1,283 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- Current value: Est savings of 1,283 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 124 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 124 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 7 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- Current value: Est savings of 7 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 91 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- Current value: Est savings of 91 KiB\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://administracion.gob.es/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/residencia/estancia",
      "status": "ok",
      "finalUrl": "https://administracion.gob.es/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/residencia/estancia",
      "performanceScore": 0.55,
      "bestPracticesScore": 0.79,
      "transferBytes": 2186475,
      "co2Grams": 0.837597904065,
      "greenWeb": {
        "page": {
          "hostname": "administracion.gob.es",
          "checked": true,
          "status": "not-green",
          "green": false,
          "hostedBy": null,
          "hostedByWebsite": null,
          "listedProvider": null,
          "partner": null,
          "modified": "2026-03-29T13:38:28.588564",
          "supportingDocuments": [],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/administracion.gob.es",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290047,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "not-green",
          "externalOriginCount": 1,
          "greenCount": 1,
          "notGreenCount": 1,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 70,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/buscador/buscadorsimple.htm|input|text|q|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "q",
            "formContext": "form|get|/buscador/buscadorsimple.htm",
            "hasLabel": false,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 70,
              "urgency": "high",
              "issues": [
                "Missing associated label",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add a programmatic label using <label>, aria-label, or aria-labelledby.",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "Missing associated label",
            "urgency": "high",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 35,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": false,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Stays (of up to three months) - Residence - Citizens - Your rights and obligations in the EU - Tu espacio europeo - Punto de Acceso General",
          "lang": "en",
          "charset": "",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Information on the mandatory documentation and whether citizens of EU Member States or of other States need to report their presence for stays of less than three months",
          "robots": "all",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 34,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 25,
          "tabletSmallTapTargets": 52,
          "fixedWidthOffenders": 2,
          "oversizedMedia": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 399,
            "viewportHeight": 864,
            "contentWidth": 399,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 2,
            "smallTapTargets": 25,
            "oversizedMedia": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 829,
            "viewportHeight": 1193,
            "contentWidth": 829,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 52,
            "oversizedMedia": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 25 small targets on mobile and 52 on tablet."
          },
          {
            "title": "Refactor fixed-width components",
            "urgency": "medium",
            "detail": "2 element(s) exceeded viewport width in tested layouts; use responsive component constraints."
          }
        ]
      },
      "securityLight": {
        "score": 31,
        "urgency": "medium",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": false,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "connection": "Keep-Alive",
            "content-encoding": "gzip",
            "content-type": "text/html;charset=UTF-8",
            "date": "Mon, 30 Mar 2026 00:23:36 GMT",
            "keep-alive": "timeout=15, max=500",
            "referrer-policy": "origin-when-cross-origin,strict-origin-when-cross-origin",
            "server": "Microsoft-IIS/5.0",
            "set-cookie": "VISITOR=returning; Path=/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/ciudadanos; HttpOnly; Secure; SameSite=None\nTS01a8e1d0=01d9c3d318362ec54be3a35cae5fd00ed67f28c82880529b1b9ba56384d07a19b66567890ae44783a444bdd5d48d6a967bacc4b9ad4bff902aea9909935fb9326af3d6d004faa92ebe7359ad7861723015378e0fc9; Path=/; HttpOnly; Secure; SameSite=None\nTS01cc21ed=01d9c3d31875eb4ee065abf109a5ef141663ea9e5662999d88da62791f603954b0657e3ad206abe0e840a1f31af532847905d0382b90b7a84781f287b0f8ea376c270e95758790e5f992ab8a462f1118463bf9b8565956db104bfe20987b3f54c98e7c3998; path=/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/ciudadanos; HttpOnly; Secure; SameSite=None",
            "strict-transport-security": "max-age=63072000; preload",
            "transfer-encoding": "chunked",
            "vary": "Accept-Encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1;mode=block",
            "traceresponse": "00-ebb73b8abbf25729da55866bee1386dd-c39f628a0ccd0411-01",
            "x-dt-tracestate": "acd5d8fe-344161ca@dt"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add a Content-Security-Policy header",
            "urgency": "high",
            "detail": "Add an appropriate CSP to reduce script injection and resource loading risk."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 30,
        "urgency": "medium",
        "origin": "https://administracion.gob.es",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://administracion.gob.es/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/favicon.ico",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 2403496.2,
        "checks": {
          "hasEffectiveTextCompression": false
        },
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "estimatedSavingsBytes": 1313541,
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "estimatedSavingsBytes": 891965,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "estimatedSavingsBytes": 126680.2,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "estimatedSavingsBytes": 63759,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "estimatedSavingsBytes": 7551,
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings."
          }
        ],
        "recommendations": [
          {
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
          },
          {
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
          },
          {
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 7.37 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 4231542.2,
        "totalEstimatedBlockingMs": 9053,
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable text compression",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat.",
            "estimatedSavingsBytes": 1313541,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,283 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-text-compression"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 1198564,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,170 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 891965,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 871 KiB",
            "urgency": "high",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unused-javascript",
            "title": "Remove unused JavaScript",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code.",
            "estimatedSavingsBytes": 547349,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 535 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-javascript"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9053,
            "displayValue": "Est savings of 9,050 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 126680.2,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 124 KiB",
            "urgency": "medium",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "offscreen-images",
            "title": "Lazy-load offscreen images",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed.",
            "estimatedSavingsBytes": 75421,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 74 KiB",
            "urgency": "medium",
            "sourceAuditId": "offscreen-images"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 63759,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 62 KiB",
            "urgency": "medium",
            "sourceAuditId": "unminified-javascript"
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss.",
            "estimatedSavingsBytes": 7551,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-optimized-images"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 6712,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-responsive-images"
          }
        ],
        "recommendations": [
          {
            "title": "Enable text compression",
            "urgency": "high",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat. Estimated byte savings: 1.25 MB."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "high",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 1.14 MB."
          },
          {
            "title": "Minify CSS",
            "urgency": "high",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 871.06 KB."
          },
          {
            "title": "Remove unused JavaScript",
            "urgency": "high",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code. Estimated byte savings: 534.52 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 9053 ms."
          },
          {
            "title": "Serve images in next-gen formats",
            "urgency": "medium",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 123.71 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1881898
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.79 MB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.79 MB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 30,
        "urgency": "high",
        "transferBytes": 2186475,
        "css": {
          "unusedBytes": 1198564,
          "ratio": 0.5481718290856287,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 547349,
          "duplicatedBytes": 0,
          "ratio": 0.25033398506728866,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "high",
            "estimatedSavingsBytes": 1198564,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          },
          {
            "area": "javascript",
            "title": "Remove unused JavaScript and feature bundles",
            "urgency": "high",
            "estimatedSavingsBytes": 547349,
            "strategy": "Drop unused packages and feature code, or move them behind route-level or interaction-triggered imports.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 35,
        "urgency": "high",
        "transferBytes": 2186475,
        "estimatedDeferrableBytes": 1821334,
        "renderBlockingMs": 9053,
        "breakdown": {
          "offscreenImageSavings": 75421,
          "unusedJavascriptSavings": 547349,
          "unusedCssSavings": 1198564
        },
        "candidates": [
          {
            "title": "Lazy-load offscreen images",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 75421,
            "strategy": "Load below-the-fold images only when they approach the viewport.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Defer non-critical JavaScript",
            "area": "javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 547349,
            "strategy": "Split bundles and load feature code on interaction or route transition.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1198564,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9053,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy stylesheet from administracion.gob.es",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from administracion.gob.es",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 254411,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from administracion.gob.es",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.googletagmanager.com",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 145371,
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 34,
        "urgency": "medium",
        "providerCount": 1,
        "requestCount": 2,
        "transferBytes": 290047,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290047,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "medium",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "medium",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          }
        ]
      },
      "redundancy": {
        "score": 66,
        "urgency": "high",
        "transferBytes": 2186475,
        "estimatedRedundantBytes": 1745913,
        "redundancyRatio": 0.7985058141529173,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 1198564,
            "displayValue": "Est savings of 1,170 KiB"
          },
          {
            "auditId": "unused-javascript",
            "title": "Reduce unused JavaScript",
            "savingsBytes": 547349,
            "displayValue": "Est savings of 535 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "high",
            "estimatedSavingsBytes": 1198564,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce unused javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 547349,
            "auditId": "unused-javascript",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Enable and verify text compression",
            "urgency": "medium",
            "estimatedSavingsBytes": 1313541,
            "auditId": "uses-text-compression",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 47,
        "urgency": "high",
        "totalTransferBytes": 2186475,
        "heavyRequestCount": 6,
        "heavyBytes": 1925258,
        "heavyRatio": 0.880530534307504,
        "heavyRequests": [
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "transferSize": 1177193,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "transferSize": 254411,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "transferSize": 159823,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "transferSize": 145371,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-4YNNM3J1E0&cx=c&gtm=4e63p1",
            "transferSize": 144676,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/libs/jquery.mCustomScrollbar.css",
            "transferSize": 43784,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 1220977
          },
          {
            "resourceType": "script",
            "count": 3,
            "transferBytes": 544458
          },
          {
            "resourceType": "image",
            "count": 1,
            "transferBytes": 159823
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "administracion.gob.es",
            "count": 4,
            "transferBytes": 1635211
          },
          {
            "domain": "www.googletagmanager.com",
            "count": 2,
            "transferBytes": 290047
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Lazy-load offscreen images and media galleries",
            "urgency": "medium",
            "estimatedSavingsBytes": 75421,
            "strategy": "Load imagery only when it enters the viewport or when a user opens the relevant section.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Split JavaScript by route or interaction",
            "urgency": "high",
            "estimatedSavingsBytes": 547349,
            "strategy": "Move non-critical bundles behind route-level or event-driven imports so they are only fetched on demand.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy stylesheet asset from administracion.gob.es",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "strategy": "Split this stylesheet so component-specific CSS is delivered only when the component is rendered.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 254411,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0,
          "displayValue": "11.7 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 11.7 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": 0.01,
          "displayValue": "14.1 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- Current value: 14.1 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": 0,
          "displayValue": "Est savings of 535 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- Current value: Est savings of 535 KiB\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 1,170 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 1,170 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 9,050 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 9,050 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": 0,
          "displayValue": "Est savings of 1,283 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- Current value: Est savings of 1,283 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 124 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 124 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 7 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- Current value: Est savings of 7 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 74 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- Current value: Est savings of 74 KiB\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://administracion.gob.es/pag_Home/ca/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/trabajo-jubilacion/fiscalidad/doble-imposicion",
      "status": "ok",
      "finalUrl": "https://administracion.gob.es/pag_Home/ca/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/trabajo-jubilacion/fiscalidad/doble-imposicion",
      "performanceScore": 0.56,
      "bestPracticesScore": 0.79,
      "transferBytes": 2188303,
      "co2Grams": 0.8382981768642,
      "greenWeb": {
        "page": {
          "hostname": "administracion.gob.es",
          "checked": true,
          "status": "not-green",
          "green": false,
          "hostedBy": null,
          "hostedByWebsite": null,
          "listedProvider": null,
          "partner": null,
          "modified": "2026-03-29T13:38:28.588564",
          "supportingDocuments": [],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/administracion.gob.es",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290249,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "not-green",
          "externalOriginCount": 1,
          "greenCount": 1,
          "notGreenCount": 1,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 70,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/buscador/buscadorsimple.htm|input|text|q|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "q",
            "formContext": "form|get|/buscador/buscadorsimple.htm",
            "hasLabel": false,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 70,
              "urgency": "high",
              "issues": [
                "Missing associated label",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add a programmatic label using <label>, aria-label, or aria-labelledby.",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "Missing associated label",
            "urgency": "high",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 25,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": true,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": false,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Acuerdos de doble imposición - Fiscalidad - Trabajo y jubilación - Ciudadanos - Tus derechos y obligaciones en la UE - Tu espacio europeo - Punto de Acceso General",
          "lang": "ca",
          "charset": "",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Conoce la aplicación de un convenio para evitar la doble imposición, personas físicas y entidades residentes con rentas extranjeras, personas físicas y entidades no residentes con rentas en España, recursos y reclamaciones contra liquidaciones tributarias.",
          "robots": "all",
          "canonical": "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/trabajo-jubilacion/fiscalidad/doble-imposicion",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 38,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 32,
          "tabletSmallTapTargets": 64,
          "fixedWidthOffenders": 4,
          "oversizedMedia": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 399,
            "viewportHeight": 864,
            "contentWidth": 399,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 4,
            "smallTapTargets": 32,
            "oversizedMedia": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 829,
            "viewportHeight": 1193,
            "contentWidth": 829,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 64,
            "oversizedMedia": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 32 small targets on mobile and 64 on tablet."
          },
          {
            "title": "Refactor fixed-width components",
            "urgency": "medium",
            "detail": "4 element(s) exceeded viewport width in tested layouts; use responsive component constraints."
          }
        ]
      },
      "securityLight": {
        "score": 33,
        "urgency": "medium",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": false,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 2,
          "externalScriptsWithoutIntegrity": 2,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "connection": "Keep-Alive",
            "content-encoding": "gzip",
            "content-length": "13314",
            "content-type": "text/html;charset=UTF-8",
            "date": "Mon, 30 Mar 2026 00:23:57 GMT",
            "keep-alive": "timeout=15, max=500",
            "referrer-policy": "origin-when-cross-origin,strict-origin-when-cross-origin",
            "server": "Microsoft-IIS/5.0",
            "set-cookie": "VISITOR=returning; Path=/pag_Home/ca/Tu-espacio-europeo/derechos-obligaciones/ciudadanos; HttpOnly; Secure; SameSite=None\nTS01a8e1d0=01d9c3d318362ec54be3a35cae5fd00ed67f28c82880529b1b9ba56384d07a19b66567890ae44783a444bdd5d48d6a967bacc4b9ad4bff902aea9909935fb9326af3d6d004faa92ebe7359ad7861723015378e0fc9; Path=/; HttpOnly; Secure; SameSite=None\nTS01e460c5=01d9c3d31875eb4ee065abf109a5ef141663ea9e5662999d88da62791f603954b0657e3ad206abe0e840a1f31af532847905d0382b90b7a84781f287b0f8ea376c270e95758790e5f992ab8a462f1118463bf9b8565956db104bfe20987b3f54c98e7c3998; path=/pag_Home/ca/Tu-espacio-europeo/derechos-obligaciones/ciudadanos; HttpOnly; Secure; SameSite=None",
            "strict-transport-security": "max-age=63072000; preload",
            "vary": "Accept-Encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1;mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add a Content-Security-Policy header",
            "urgency": "high",
            "detail": "Add an appropriate CSP to reduce script injection and resource loading risk."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "2 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 30,
        "urgency": "medium",
        "origin": "https://administracion.gob.es",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://administracion.gob.es/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/favicon.ico",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 2403496.2,
        "checks": {
          "hasEffectiveTextCompression": false
        },
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "estimatedSavingsBytes": 1313541,
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "estimatedSavingsBytes": 891965,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "estimatedSavingsBytes": 126680.2,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "estimatedSavingsBytes": 63759,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "estimatedSavingsBytes": 7551,
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings."
          }
        ],
        "recommendations": [
          {
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
          },
          {
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
          },
          {
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 7.37 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 4246892.2,
        "totalEstimatedBlockingMs": 9232,
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable text compression",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat.",
            "estimatedSavingsBytes": 1313541,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,283 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-text-compression"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 1198086,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,170 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 891965,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 871 KiB",
            "urgency": "high",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unused-javascript",
            "title": "Remove unused JavaScript",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code.",
            "estimatedSavingsBytes": 547483,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 535 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-javascript"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9232,
            "displayValue": "Est savings of 9,230 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 126680.2,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 124 KiB",
            "urgency": "medium",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "offscreen-images",
            "title": "Lazy-load offscreen images",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed.",
            "estimatedSavingsBytes": 91115,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 89 KiB",
            "urgency": "medium",
            "sourceAuditId": "offscreen-images"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 63759,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 62 KiB",
            "urgency": "medium",
            "sourceAuditId": "unminified-javascript"
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss.",
            "estimatedSavingsBytes": 7551,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-optimized-images"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 6712,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-responsive-images"
          }
        ],
        "recommendations": [
          {
            "title": "Enable text compression",
            "urgency": "high",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat. Estimated byte savings: 1.25 MB."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "high",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 1.14 MB."
          },
          {
            "title": "Minify CSS",
            "urgency": "high",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 871.06 KB."
          },
          {
            "title": "Remove unused JavaScript",
            "urgency": "high",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code. Estimated byte savings: 534.65 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 9232 ms."
          },
          {
            "title": "Serve images in next-gen formats",
            "urgency": "medium",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 123.71 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 4,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 2,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "2 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1881789
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.79 MB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.79 MB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 30,
        "urgency": "high",
        "transferBytes": 2188303,
        "css": {
          "unusedBytes": 1198086,
          "ratio": 0.547495479373743,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 547483,
          "duplicatedBytes": 0,
          "ratio": 0.25018610311277734,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "high",
            "estimatedSavingsBytes": 1198086,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          },
          {
            "area": "javascript",
            "title": "Remove unused JavaScript and feature bundles",
            "urgency": "high",
            "estimatedSavingsBytes": 547483,
            "strategy": "Drop unused packages and feature code, or move them behind route-level or interaction-triggered imports.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 35,
        "urgency": "high",
        "transferBytes": 2188303,
        "estimatedDeferrableBytes": 1836684,
        "renderBlockingMs": 9232,
        "breakdown": {
          "offscreenImageSavings": 91115,
          "unusedJavascriptSavings": 547483,
          "unusedCssSavings": 1198086
        },
        "candidates": [
          {
            "title": "Lazy-load offscreen images",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 91115,
            "strategy": "Load below-the-fold images only when they approach the viewport.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Defer non-critical JavaScript",
            "area": "javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 547483,
            "strategy": "Split bundles and load feature code on interaction or route transition.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1198086,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9232,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy stylesheet from administracion.gob.es",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from administracion.gob.es",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 254529,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from administracion.gob.es",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.googletagmanager.com",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 145477,
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 34,
        "urgency": "medium",
        "providerCount": 1,
        "requestCount": 2,
        "transferBytes": 290249,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290249,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "medium",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "medium",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          }
        ]
      },
      "redundancy": {
        "score": 66,
        "urgency": "high",
        "transferBytes": 2188303,
        "estimatedRedundantBytes": 1745569,
        "redundancyRatio": 0.7976815824865203,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 1198086,
            "displayValue": "Est savings of 1,170 KiB"
          },
          {
            "auditId": "unused-javascript",
            "title": "Reduce unused JavaScript",
            "savingsBytes": 547483,
            "displayValue": "Est savings of 535 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "high",
            "estimatedSavingsBytes": 1198086,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce unused javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 547483,
            "auditId": "unused-javascript",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Enable and verify text compression",
            "urgency": "medium",
            "estimatedSavingsBytes": 1313541,
            "auditId": "uses-text-compression",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 47,
        "urgency": "high",
        "totalTransferBytes": 2188303,
        "heavyRequestCount": 6,
        "heavyBytes": 1925578,
        "heavyRatio": 0.8799412147220929,
        "heavyRequests": [
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "transferSize": 1177193,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "transferSize": 254529,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "transferSize": 159823,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "transferSize": 145477,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-4YNNM3J1E0&cx=c&gtm=4e63q0h2",
            "transferSize": 144772,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/libs/jquery.mCustomScrollbar.css",
            "transferSize": 43784,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 1220977
          },
          {
            "resourceType": "script",
            "count": 3,
            "transferBytes": 544778
          },
          {
            "resourceType": "image",
            "count": 1,
            "transferBytes": 159823
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "administracion.gob.es",
            "count": 4,
            "transferBytes": 1635329
          },
          {
            "domain": "www.googletagmanager.com",
            "count": 2,
            "transferBytes": 290249
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Lazy-load offscreen images and media galleries",
            "urgency": "medium",
            "estimatedSavingsBytes": 91115,
            "strategy": "Load imagery only when it enters the viewport or when a user opens the relevant section.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Split JavaScript by route or interaction",
            "urgency": "high",
            "estimatedSavingsBytes": 547483,
            "strategy": "Move non-critical bundles behind route-level or event-driven imports so they are only fetched on demand.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy stylesheet asset from administracion.gob.es",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "strategy": "Split this stylesheet so component-specific CSS is delivered only when the component is rendered.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 254529,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0,
          "displayValue": "11.6 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 11.6 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": 0.06,
          "displayValue": "10.9 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- Current value: 10.9 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": 0,
          "displayValue": "Est savings of 535 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- Current value: Est savings of 535 KiB\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 1,170 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 1,170 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 9,230 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 9,230 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": 0,
          "displayValue": "Est savings of 1,283 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- Current value: Est savings of 1,283 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 124 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 124 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 7 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- Current value: Est savings of 7 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 89 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- Current value: Est savings of 89 KiB\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://administracion.gob.es/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/empresas/inicio-gestion-cierre/derechos/denominaciones-origen",
      "status": "ok",
      "finalUrl": "https://administracion.gob.es/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/empresas/inicio-gestion-cierre/derechos/denominaciones-origen",
      "performanceScore": 0.55,
      "bestPracticesScore": 0.79,
      "transferBytes": 2293677,
      "co2Grams": 0.8786649963078002,
      "greenWeb": {
        "page": {
          "hostname": "administracion.gob.es",
          "checked": true,
          "status": "not-green",
          "green": false,
          "hostedBy": null,
          "hostedByWebsite": null,
          "listedProvider": null,
          "partner": null,
          "modified": "2026-03-29T13:38:28.588564",
          "supportingDocuments": [],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/administracion.gob.es",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290040,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "not-green",
          "externalOriginCount": 1,
          "greenCount": 1,
          "notGreenCount": 1,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 70,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/buscador/buscadorsimple.htm|input|text|q|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "q",
            "formContext": "form|get|/buscador/buscadorsimple.htm",
            "hasLabel": false,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 70,
              "urgency": "high",
              "issues": [
                "Missing associated label",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add a programmatic label using <label>, aria-label, or aria-labelledby.",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "Missing associated label",
            "urgency": "high",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 25,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": true,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": false,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Denominaciones de Origen, Indicaciones Geográficas Protegidas y Especialidades Tradicionales Garantizadas - Derechos de propiedad industrial e intelectual - Puesta en marcha, gestión y cierre de una empresa - Empresas - Tus derechos y obligaciones en la UE - Tu espacio europeo - Punto de Acceso General",
          "lang": "eu",
          "charset": "",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Conoce qué es una Denominación de origen, una Indicación geográfica protegida y las especialidades tradicionales garantizadas, quién puede solicitarlas, y dónde, y cómo se reconocen en el mercado.",
          "robots": "all",
          "canonical": "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/empresas/inicio-gestion-cierre/derechos/denominaciones-origen",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 38,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 52,
          "tabletSmallTapTargets": 85,
          "fixedWidthOffenders": 4,
          "oversizedMedia": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 465,
            "viewportHeight": 1005,
            "contentWidth": 465,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 3,
            "smallTapTargets": 52,
            "oversizedMedia": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 890,
            "viewportHeight": 1280,
            "contentWidth": 890,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 1,
            "smallTapTargets": 85,
            "oversizedMedia": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 52 small targets on mobile and 85 on tablet."
          },
          {
            "title": "Refactor fixed-width components",
            "urgency": "medium",
            "detail": "4 element(s) exceeded viewport width in tested layouts; use responsive component constraints."
          }
        ]
      },
      "securityLight": {
        "score": 33,
        "urgency": "medium",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": false,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 2,
          "externalScriptsWithoutIntegrity": 2,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "connection": "Keep-Alive",
            "content-encoding": "gzip",
            "content-type": "text/html;charset=UTF-8",
            "date": "Mon, 30 Mar 2026 00:24:23 GMT",
            "keep-alive": "timeout=15, max=500",
            "referrer-policy": "origin-when-cross-origin,strict-origin-when-cross-origin",
            "server": "Microsoft-IIS/5.0",
            "set-cookie": "VISITOR=returning; Path=/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/empresas; HttpOnly; Secure; SameSite=None\nTS01a8e1d0=01d9c3d318362ec54be3a35cae5fd00ed67f28c82880529b1b9ba56384d07a19b66567890ae44783a444bdd5d48d6a967bacc4b9ad4bff902aea9909935fb9326af3d6d004faa92ebe7359ad7861723015378e0fc9; Path=/; HttpOnly; Secure; SameSite=None\nTS01298ba9=01d9c3d3183d0ab5e35f0a4d3b0e06f02e6973180380529b1b9ba56384d07a19b66567890ae44783a444bdd5d48d6a967bacc4b9ad4bff902aea9909935fb9326af3d6d004f98a4d48eaff3a52021502918d296d1fe81761193e34385adc30c5a064c0078b; path=/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/empresas; HttpOnly; Secure; SameSite=None",
            "strict-transport-security": "max-age=63072000; preload",
            "transfer-encoding": "chunked",
            "vary": "Accept-Encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1;mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add a Content-Security-Policy header",
            "urgency": "high",
            "detail": "Add an appropriate CSP to reduce script injection and resource loading risk."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "2 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 30,
        "urgency": "medium",
        "origin": "https://administracion.gob.es",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://administracion.gob.es/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/favicon.ico",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 2440270.35,
        "checks": {
          "hasEffectiveTextCompression": false
        },
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "estimatedSavingsBytes": 1315073,
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "estimatedSavingsBytes": 891965,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "estimatedSavingsBytes": 161922.35,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "estimatedSavingsBytes": 63759,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "estimatedSavingsBytes": 7551,
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings."
          }
        ],
        "recommendations": [
          {
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
          },
          {
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 158.13 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
          },
          {
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 7.37 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 4359100.35,
        "totalEstimatedBlockingMs": 9257,
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable text compression",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat.",
            "estimatedSavingsBytes": 1315073,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,284 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-text-compression"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 1195436,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,167 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 891965,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 871 KiB",
            "urgency": "high",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unused-javascript",
            "title": "Remove unused JavaScript",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code.",
            "estimatedSavingsBytes": 544481,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 532 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-javascript"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9257,
            "displayValue": "Est savings of 9,260 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "offscreen-images",
            "title": "Lazy-load offscreen images",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed.",
            "estimatedSavingsBytes": 172201,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 168 KiB",
            "urgency": "medium",
            "sourceAuditId": "offscreen-images"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 161922.35,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 158 KiB",
            "urgency": "medium",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 63759,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 62 KiB",
            "urgency": "medium",
            "sourceAuditId": "unminified-javascript"
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss.",
            "estimatedSavingsBytes": 7551,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-optimized-images"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 6712,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-responsive-images"
          }
        ],
        "recommendations": [
          {
            "title": "Enable text compression",
            "urgency": "high",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat. Estimated byte savings: 1.25 MB."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "high",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 1.14 MB."
          },
          {
            "title": "Minify CSS",
            "urgency": "high",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 871.06 KB."
          },
          {
            "title": "Remove unused JavaScript",
            "urgency": "high",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code. Estimated byte savings: 531.72 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 9257 ms."
          },
          {
            "title": "Lazy-load offscreen images",
            "urgency": "medium",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed. Estimated byte savings: 168.17 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 4,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 2,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "2 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1981787
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.89 MB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.89 MB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 29,
        "urgency": "high",
        "transferBytes": 2293677,
        "css": {
          "unusedBytes": 1195436,
          "ratio": 0.5211875952891362,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 544481,
          "duplicatedBytes": 0,
          "ratio": 0.23738346768093327,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "high",
            "estimatedSavingsBytes": 1195436,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          },
          {
            "area": "javascript",
            "title": "Remove unused JavaScript and feature bundles",
            "urgency": "high",
            "estimatedSavingsBytes": 544481,
            "strategy": "Drop unused packages and feature code, or move them behind route-level or interaction-triggered imports.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 35,
        "urgency": "high",
        "transferBytes": 2293677,
        "estimatedDeferrableBytes": 1912118,
        "renderBlockingMs": 9257,
        "breakdown": {
          "offscreenImageSavings": 172201,
          "unusedJavascriptSavings": 544481,
          "unusedCssSavings": 1195436
        },
        "candidates": [
          {
            "title": "Lazy-load offscreen images",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 172201,
            "strategy": "Load below-the-fold images only when they approach the viewport.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Defer non-critical JavaScript",
            "area": "javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 544481,
            "strategy": "Split bundles and load feature code on interaction or route transition.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1195436,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9257,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy stylesheet from administracion.gob.es",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from administracion.gob.es",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 254418,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from administracion.gob.es",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 159817,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.googletagmanager.com",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 145368,
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 34,
        "urgency": "medium",
        "providerCount": 1,
        "requestCount": 2,
        "transferBytes": 290040,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290040,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "medium",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "medium",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          }
        ]
      },
      "redundancy": {
        "score": 64,
        "urgency": "high",
        "transferBytes": 2293677,
        "estimatedRedundantBytes": 1739917,
        "redundancyRatio": 0.7585710629700695,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 1195436,
            "displayValue": "Est savings of 1,167 KiB"
          },
          {
            "auditId": "unused-javascript",
            "title": "Reduce unused JavaScript",
            "savingsBytes": 544481,
            "displayValue": "Est savings of 532 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "high",
            "estimatedSavingsBytes": 1195436,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce unused javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 544481,
            "auditId": "unused-javascript",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Enable and verify text compression",
            "urgency": "medium",
            "estimatedSavingsBytes": 1315073,
            "auditId": "uses-text-compression",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 46,
        "urgency": "high",
        "totalTransferBytes": 2293677,
        "heavyRequestCount": 6,
        "heavyBytes": 1925252,
        "heavyRatio": 0.8393736345614488,
        "heavyRequests": [
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "transferSize": 1177193,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "transferSize": 254418,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "transferSize": 159817,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "transferSize": 145368,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-4YNNM3J1E0&cx=c&gtm=4e63p1h1",
            "transferSize": 144672,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/libs/jquery.mCustomScrollbar.css",
            "transferSize": 43784,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 1220977
          },
          {
            "resourceType": "script",
            "count": 3,
            "transferBytes": 544458
          },
          {
            "resourceType": "image",
            "count": 1,
            "transferBytes": 159817
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "administracion.gob.es",
            "count": 4,
            "transferBytes": 1635212
          },
          {
            "domain": "www.googletagmanager.com",
            "count": 2,
            "transferBytes": 290040
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Lazy-load offscreen images and media galleries",
            "urgency": "high",
            "estimatedSavingsBytes": 172201,
            "strategy": "Load imagery only when it enters the viewport or when a user opens the relevant section.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Split JavaScript by route or interaction",
            "urgency": "high",
            "estimatedSavingsBytes": 544481,
            "strategy": "Move non-critical bundles behind route-level or event-driven imports so they are only fetched on demand.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy stylesheet asset from administracion.gob.es",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "strategy": "Split this stylesheet so component-specific CSS is delivered only when the component is rendered.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 254418,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 159817,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0,
          "displayValue": "12.7 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 12.7 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": 0,
          "displayValue": "15.6 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- Current value: 15.6 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": 0,
          "displayValue": "Est savings of 532 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- Current value: Est savings of 532 KiB\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 1,167 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 1,167 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 9,260 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 9,260 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": 0,
          "displayValue": "Est savings of 1,284 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- Current value: Est savings of 1,284 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 158 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 158 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 7 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- Current value: Est savings of 7 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 168 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- Current value: Est savings of 168 KiB\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://administracion.gob.es/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/consumidores/conexion-servicios/gas",
      "status": "ok",
      "finalUrl": "https://administracion.gob.es/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/consumidores/conexion-servicios/gas",
      "performanceScore": 0.56,
      "bestPracticesScore": 0.79,
      "transferBytes": 2213310,
      "co2Grams": 0.8478778934340001,
      "greenWeb": {
        "page": {
          "hostname": "administracion.gob.es",
          "checked": true,
          "status": "not-green",
          "green": false,
          "hostedBy": null,
          "hostedByWebsite": null,
          "listedProvider": null,
          "partner": null,
          "modified": "2026-03-29T13:38:28.588564",
          "supportingDocuments": [],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/administracion.gob.es",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290047,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "not-green",
          "externalOriginCount": 1,
          "greenCount": 1,
          "notGreenCount": 1,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 70,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/buscador/buscadorsimple.htm|input|text|q|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "q",
            "formContext": "form|get|/buscador/buscadorsimple.htm",
            "hasLabel": false,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 70,
              "urgency": "high",
              "issues": [
                "Missing associated label",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add a programmatic label using <label>, aria-label, or aria-labelledby.",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "Missing associated label",
            "urgency": "high",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 25,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": true,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": false,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Conexión a servicios de gas - Conexión a servicios - Consumidores - Ciudadanos - Tus derechos y obligaciones en la UE - Tu espacio europeo - Punto de Acceso General",
          "lang": "eu",
          "charset": "",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Conoce la elección de proveedor, comparador de precios, derechos de los consumidores, cómo hacer una reclamación y sobre impago de facturas.",
          "robots": "all",
          "canonical": "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/consumidores/conexion-servicios/gas",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 32,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 51,
          "tabletSmallTapTargets": 82,
          "fixedWidthOffenders": 1,
          "oversizedMedia": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 425,
            "viewportHeight": 918,
            "contentWidth": 425,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 1,
            "smallTapTargets": 51,
            "oversizedMedia": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 849,
            "viewportHeight": 1222,
            "contentWidth": 849,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 82,
            "oversizedMedia": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 51 small targets on mobile and 82 on tablet."
          },
          {
            "title": "Refactor fixed-width components",
            "urgency": "medium",
            "detail": "1 element(s) exceeded viewport width in tested layouts; use responsive component constraints."
          }
        ]
      },
      "securityLight": {
        "score": 33,
        "urgency": "medium",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": false,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 2,
          "externalScriptsWithoutIntegrity": 2,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "connection": "Keep-Alive",
            "content-encoding": "gzip",
            "content-type": "text/html;charset=UTF-8",
            "date": "Mon, 30 Mar 2026 00:24:45 GMT",
            "keep-alive": "timeout=15, max=500",
            "referrer-policy": "origin-when-cross-origin,strict-origin-when-cross-origin",
            "server": "Microsoft-IIS/5.0",
            "set-cookie": "VISITOR=returning; Path=/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/ciudadanos; HttpOnly; Secure; SameSite=None\nTS01a8e1d0=01d9c3d318362ec54be3a35cae5fd00ed67f28c82880529b1b9ba56384d07a19b66567890ae44783a444bdd5d48d6a967bacc4b9ad4bff902aea9909935fb9326af3d6d004faa92ebe7359ad7861723015378e0fc9; Path=/; HttpOnly; Secure; SameSite=None\nTS011d349b=01d9c3d3183d0ab5e35f0a4d3b0e06f02e6973180380529b1b9ba56384d07a19b66567890ae44783a444bdd5d48d6a967bacc4b9ad4bff902aea9909935fb9326af3d6d004f98a4d48eaff3a52021502918d296d1fe81761193e34385adc30c5a064c0078b; path=/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/ciudadanos; HttpOnly; Secure; SameSite=None",
            "strict-transport-security": "max-age=63072000; preload",
            "transfer-encoding": "chunked",
            "vary": "Accept-Encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1;mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add a Content-Security-Policy header",
            "urgency": "high",
            "detail": "Add an appropriate CSP to reduce script injection and resource loading risk."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "2 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 30,
        "urgency": "medium",
        "origin": "https://administracion.gob.es",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://administracion.gob.es/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/favicon.ico",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 2403496.2,
        "checks": {
          "hasEffectiveTextCompression": false
        },
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "estimatedSavingsBytes": 1313541,
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "estimatedSavingsBytes": 891965,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "estimatedSavingsBytes": 126680.2,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "estimatedSavingsBytes": 63759,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "estimatedSavingsBytes": 7551,
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings."
          }
        ],
        "recommendations": [
          {
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
          },
          {
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
          },
          {
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 7.37 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 4258063.2,
        "totalEstimatedBlockingMs": 9242,
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable text compression",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat.",
            "estimatedSavingsBytes": 1313541,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,283 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-text-compression"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 1195579,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,168 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 891965,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 871 KiB",
            "urgency": "high",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unused-javascript",
            "title": "Remove unused JavaScript",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code.",
            "estimatedSavingsBytes": 547292,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 534 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-javascript"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9242,
            "displayValue": "Est savings of 9,240 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 126680.2,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 124 KiB",
            "urgency": "medium",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "offscreen-images",
            "title": "Lazy-load offscreen images",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed.",
            "estimatedSavingsBytes": 104984,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 103 KiB",
            "urgency": "medium",
            "sourceAuditId": "offscreen-images"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 63759,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 62 KiB",
            "urgency": "medium",
            "sourceAuditId": "unminified-javascript"
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss.",
            "estimatedSavingsBytes": 7551,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-optimized-images"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 6712,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-responsive-images"
          }
        ],
        "recommendations": [
          {
            "title": "Enable text compression",
            "urgency": "high",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat. Estimated byte savings: 1.25 MB."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "high",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 1.14 MB."
          },
          {
            "title": "Minify CSS",
            "urgency": "high",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 871.06 KB."
          },
          {
            "title": "Remove unused JavaScript",
            "urgency": "high",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code. Estimated byte savings: 534.46 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 9242 ms."
          },
          {
            "title": "Serve images in next-gen formats",
            "urgency": "medium",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 123.71 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 4,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 2,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "2 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1902205
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.81 MB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.81 MB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 30,
        "urgency": "high",
        "transferBytes": 2213310,
        "css": {
          "unusedBytes": 1195579,
          "ratio": 0.5401769295760648,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 547292,
          "duplicatedBytes": 0,
          "ratio": 0.24727308872232087,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "high",
            "estimatedSavingsBytes": 1195579,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          },
          {
            "area": "javascript",
            "title": "Remove unused JavaScript and feature bundles",
            "urgency": "high",
            "estimatedSavingsBytes": 547292,
            "strategy": "Drop unused packages and feature code, or move them behind route-level or interaction-triggered imports.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 35,
        "urgency": "high",
        "transferBytes": 2213310,
        "estimatedDeferrableBytes": 1847855,
        "renderBlockingMs": 9242,
        "breakdown": {
          "offscreenImageSavings": 104984,
          "unusedJavascriptSavings": 547292,
          "unusedCssSavings": 1195579
        },
        "candidates": [
          {
            "title": "Lazy-load offscreen images",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 104984,
            "strategy": "Load below-the-fold images only when they approach the viewport.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Defer non-critical JavaScript",
            "area": "javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 547292,
            "strategy": "Split bundles and load feature code on interaction or route transition.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1195579,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9242,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy stylesheet from administracion.gob.es",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from administracion.gob.es",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 254411,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from administracion.gob.es",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.googletagmanager.com",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 145371,
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 34,
        "urgency": "medium",
        "providerCount": 1,
        "requestCount": 2,
        "transferBytes": 290047,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290047,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "medium",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "medium",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          }
        ]
      },
      "redundancy": {
        "score": 68,
        "urgency": "high",
        "transferBytes": 2213310,
        "estimatedRedundantBytes": 1742871,
        "redundancyRatio": 0.7874500182983857,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 1195579,
            "displayValue": "Est savings of 1,168 KiB"
          },
          {
            "auditId": "unused-javascript",
            "title": "Reduce unused JavaScript",
            "savingsBytes": 547292,
            "displayValue": "Est savings of 534 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "high",
            "estimatedSavingsBytes": 1195579,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce unused javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 547292,
            "auditId": "unused-javascript",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Enable and verify text compression",
            "urgency": "medium",
            "estimatedSavingsBytes": 1313541,
            "auditId": "uses-text-compression",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 47,
        "urgency": "high",
        "totalTransferBytes": 2213310,
        "heavyRequestCount": 6,
        "heavyBytes": 1925258,
        "heavyRatio": 0.8698546520821756,
        "heavyRequests": [
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "transferSize": 1177193,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "transferSize": 254411,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "transferSize": 159823,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "transferSize": 145371,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-4YNNM3J1E0&cx=c&gtm=4e63p1",
            "transferSize": 144676,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/libs/jquery.mCustomScrollbar.css",
            "transferSize": 43784,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 1220977
          },
          {
            "resourceType": "script",
            "count": 3,
            "transferBytes": 544458
          },
          {
            "resourceType": "image",
            "count": 1,
            "transferBytes": 159823
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "administracion.gob.es",
            "count": 4,
            "transferBytes": 1635211
          },
          {
            "domain": "www.googletagmanager.com",
            "count": 2,
            "transferBytes": 290047
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Lazy-load offscreen images and media galleries",
            "urgency": "medium",
            "estimatedSavingsBytes": 104984,
            "strategy": "Load imagery only when it enters the viewport or when a user opens the relevant section.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Split JavaScript by route or interaction",
            "urgency": "high",
            "estimatedSavingsBytes": 547292,
            "strategy": "Move non-critical bundles behind route-level or event-driven imports so they are only fetched on demand.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy stylesheet asset from administracion.gob.es",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "strategy": "Split this stylesheet so component-specific CSS is delivered only when the component is rendered.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 254411,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0,
          "displayValue": "12.2 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 12.2 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": 0.06,
          "displayValue": "11.1 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- Current value: 11.1 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": 0,
          "displayValue": "Est savings of 534 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- Current value: Est savings of 534 KiB\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 1,168 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 1,168 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 9,240 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 9,240 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": 0,
          "displayValue": "Est savings of 1,283 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- Current value: Est savings of 1,283 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 124 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 124 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 7 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- Current value: Est savings of 7 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 103 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- Current value: Est savings of 103 KiB\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://administracion.gob.es/pag_Home/ca/Tu-espacio-europeo/derechos-obligaciones/empresas/impuestos/especiales/electricidad",
      "status": "ok",
      "finalUrl": "https://administracion.gob.es/pag_Home/ca/Tu-espacio-europeo/derechos-obligaciones/empresas/impuestos/especiales/electricidad",
      "performanceScore": 0.55,
      "bestPracticesScore": 0.79,
      "transferBytes": 2187772,
      "co2Grams": 0.8380947606408002,
      "greenWeb": {
        "page": {
          "hostname": "administracion.gob.es",
          "checked": true,
          "status": "not-green",
          "green": false,
          "hostedBy": null,
          "hostedByWebsite": null,
          "listedProvider": null,
          "partner": null,
          "modified": "2026-03-29T13:38:28.588564",
          "supportingDocuments": [],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/administracion.gob.es",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290047,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "not-green",
          "externalOriginCount": 1,
          "greenCount": 1,
          "notGreenCount": 1,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 70,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/buscador/buscadorsimple.htm|input|text|q|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "q",
            "formContext": "form|get|/buscador/buscadorsimple.htm",
            "hasLabel": false,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 70,
              "urgency": "high",
              "issues": [
                "Missing associated label",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add a programmatic label using <label>, aria-label, or aria-labelledby.",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "Missing associated label",
            "urgency": "high",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 25,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": true,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": false,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Impuesto especial sobre la electricidad - Impuestos especiales - Impuestos - Empresas - Tus derechos y obligaciones en la UE - Tu espacio europeo - Punto de Acceso General",
          "lang": "ca",
          "charset": "",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Conoce donde se aplica, que operaciones grava este impuesto, exenciones, tipos impositivos, pago, registro e inscripción",
          "robots": "all",
          "canonical": "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/empresas/impuestos/especiales/electricidad",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 32,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 33,
          "tabletSmallTapTargets": 66,
          "fixedWidthOffenders": 1,
          "oversizedMedia": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 399,
            "viewportHeight": 864,
            "contentWidth": 399,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 1,
            "smallTapTargets": 33,
            "oversizedMedia": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 829,
            "viewportHeight": 1193,
            "contentWidth": 829,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 66,
            "oversizedMedia": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 33 small targets on mobile and 66 on tablet."
          },
          {
            "title": "Refactor fixed-width components",
            "urgency": "medium",
            "detail": "1 element(s) exceeded viewport width in tested layouts; use responsive component constraints."
          }
        ]
      },
      "securityLight": {
        "score": 31,
        "urgency": "medium",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": false,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "connection": "Keep-Alive",
            "content-encoding": "gzip",
            "content-type": "text/html;charset=UTF-8",
            "date": "Mon, 30 Mar 2026 00:25:07 GMT",
            "keep-alive": "timeout=15, max=500",
            "referrer-policy": "origin-when-cross-origin,strict-origin-when-cross-origin",
            "server": "Microsoft-IIS/5.0",
            "set-cookie": "VISITOR=returning; Path=/pag_Home/ca/Tu-espacio-europeo/derechos-obligaciones/empresas; HttpOnly; Secure; SameSite=None\nTS01a8e1d0=01d9c3d318362ec54be3a35cae5fd00ed67f28c82880529b1b9ba56384d07a19b66567890ae44783a444bdd5d48d6a967bacc4b9ad4bff902aea9909935fb9326af3d6d004faa92ebe7359ad7861723015378e0fc9; Path=/; HttpOnly; Secure; SameSite=None\nTS013701fe=01d9c3d3183d0ab5e35f0a4d3b0e06f02e6973180380529b1b9ba56384d07a19b66567890ae44783a444bdd5d48d6a967bacc4b9ad4bff902aea9909935fb9326af3d6d004f98a4d48eaff3a52021502918d296d1fe81761193e34385adc30c5a064c0078b; path=/pag_Home/ca/Tu-espacio-europeo/derechos-obligaciones/empresas; HttpOnly; Secure; SameSite=None",
            "strict-transport-security": "max-age=63072000; preload",
            "transfer-encoding": "chunked",
            "vary": "Accept-Encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1;mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add a Content-Security-Policy header",
            "urgency": "high",
            "detail": "Add an appropriate CSP to reduce script injection and resource loading risk."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 30,
        "urgency": "medium",
        "origin": "https://administracion.gob.es",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://administracion.gob.es/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/favicon.ico",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 2403496.2,
        "checks": {
          "hasEffectiveTextCompression": false
        },
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "estimatedSavingsBytes": 1313541,
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "estimatedSavingsBytes": 891965,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "estimatedSavingsBytes": 126680.2,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "estimatedSavingsBytes": 63759,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "estimatedSavingsBytes": 7551,
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings."
          }
        ],
        "recommendations": [
          {
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
          },
          {
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
          },
          {
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 7.37 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 4246002.2,
        "totalEstimatedBlockingMs": 8933,
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable text compression",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat.",
            "estimatedSavingsBytes": 1313541,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,283 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-text-compression"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 1197876,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,170 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 891965,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 871 KiB",
            "urgency": "high",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unused-javascript",
            "title": "Remove unused JavaScript",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code.",
            "estimatedSavingsBytes": 546803,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 534 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-javascript"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 8933,
            "displayValue": "Est savings of 8,930 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 126680.2,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 124 KiB",
            "urgency": "medium",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "offscreen-images",
            "title": "Lazy-load offscreen images",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed.",
            "estimatedSavingsBytes": 91115,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 89 KiB",
            "urgency": "medium",
            "sourceAuditId": "offscreen-images"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 63759,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 62 KiB",
            "urgency": "medium",
            "sourceAuditId": "unminified-javascript"
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss.",
            "estimatedSavingsBytes": 7551,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-optimized-images"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 6712,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-responsive-images"
          }
        ],
        "recommendations": [
          {
            "title": "Enable text compression",
            "urgency": "high",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat. Estimated byte savings: 1.25 MB."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "high",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 1.14 MB."
          },
          {
            "title": "Minify CSS",
            "urgency": "high",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 871.06 KB."
          },
          {
            "title": "Remove unused JavaScript",
            "urgency": "high",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code. Estimated byte savings: 533.99 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 8933 ms."
          },
          {
            "title": "Serve images in next-gen formats",
            "urgency": "medium",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 123.71 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1881658
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.79 MB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.79 MB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 30,
        "urgency": "high",
        "transferBytes": 2187772,
        "css": {
          "unusedBytes": 1197876,
          "ratio": 0.5475323754029213,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 546803,
          "duplicatedBytes": 0,
          "ratio": 0.24993600795695348,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "high",
            "estimatedSavingsBytes": 1197876,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          },
          {
            "area": "javascript",
            "title": "Remove unused JavaScript and feature bundles",
            "urgency": "high",
            "estimatedSavingsBytes": 546803,
            "strategy": "Drop unused packages and feature code, or move them behind route-level or interaction-triggered imports.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 35,
        "urgency": "high",
        "transferBytes": 2187772,
        "estimatedDeferrableBytes": 1835794,
        "renderBlockingMs": 8933,
        "breakdown": {
          "offscreenImageSavings": 91115,
          "unusedJavascriptSavings": 546803,
          "unusedCssSavings": 1197876
        },
        "candidates": [
          {
            "title": "Lazy-load offscreen images",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 91115,
            "strategy": "Load below-the-fold images only when they approach the viewport.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Defer non-critical JavaScript",
            "area": "javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 546803,
            "strategy": "Split bundles and load feature code on interaction or route transition.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1197876,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 8933,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy stylesheet from administracion.gob.es",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from administracion.gob.es",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 254411,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from administracion.gob.es",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.googletagmanager.com",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 145371,
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 34,
        "urgency": "medium",
        "providerCount": 1,
        "requestCount": 2,
        "transferBytes": 290047,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290047,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "medium",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "medium",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          }
        ]
      },
      "redundancy": {
        "score": 66,
        "urgency": "high",
        "transferBytes": 2187772,
        "estimatedRedundantBytes": 1744679,
        "redundancyRatio": 0.7974683833598748,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 1197876,
            "displayValue": "Est savings of 1,170 KiB"
          },
          {
            "auditId": "unused-javascript",
            "title": "Reduce unused JavaScript",
            "savingsBytes": 546803,
            "displayValue": "Est savings of 534 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "high",
            "estimatedSavingsBytes": 1197876,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce unused javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 546803,
            "auditId": "unused-javascript",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Enable and verify text compression",
            "urgency": "medium",
            "estimatedSavingsBytes": 1313541,
            "auditId": "uses-text-compression",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 47,
        "urgency": "high",
        "totalTransferBytes": 2187772,
        "heavyRequestCount": 6,
        "heavyBytes": 1925258,
        "heavyRatio": 0.8800085200834457,
        "heavyRequests": [
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "transferSize": 1177193,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "transferSize": 254411,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "transferSize": 159823,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "transferSize": 145371,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-4YNNM3J1E0&cx=c&gtm=4e63p1",
            "transferSize": 144676,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/libs/jquery.mCustomScrollbar.css",
            "transferSize": 43784,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 1220977
          },
          {
            "resourceType": "script",
            "count": 3,
            "transferBytes": 544458
          },
          {
            "resourceType": "image",
            "count": 1,
            "transferBytes": 159823
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "administracion.gob.es",
            "count": 4,
            "transferBytes": 1635211
          },
          {
            "domain": "www.googletagmanager.com",
            "count": 2,
            "transferBytes": 290047
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Lazy-load offscreen images and media galleries",
            "urgency": "medium",
            "estimatedSavingsBytes": 91115,
            "strategy": "Load imagery only when it enters the viewport or when a user opens the relevant section.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Split JavaScript by route or interaction",
            "urgency": "high",
            "estimatedSavingsBytes": 546803,
            "strategy": "Move non-critical bundles behind route-level or event-driven imports so they are only fetched on demand.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy stylesheet asset from administracion.gob.es",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "strategy": "Split this stylesheet so component-specific CSS is delivered only when the component is rendered.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 254411,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0,
          "displayValue": "11.6 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 11.6 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": 0.03,
          "displayValue": "12.6 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- Current value: 12.6 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": 0,
          "displayValue": "Est savings of 534 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- Current value: Est savings of 534 KiB\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 1,170 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 1,170 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 8,930 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 8,930 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": 0,
          "displayValue": "Est savings of 1,283 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- Current value: Est savings of 1,283 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 124 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 124 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 7 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- Current value: Est savings of 7 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 89 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- Current value: Est savings of 89 KiB\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://administracion.gob.es/pag_Home/gl/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/residencia/obtencion-residencia/inscribirte-residente",
      "status": "ok",
      "finalUrl": "https://administracion.gob.es/pag_Home/gl/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/residencia/obtencion-residencia/inscribirte-residente",
      "performanceScore": 0.55,
      "bestPracticesScore": 0.79,
      "transferBytes": 2191130,
      "co2Grams": 0.839381147982,
      "greenWeb": {
        "page": {
          "hostname": "administracion.gob.es",
          "checked": true,
          "status": "not-green",
          "green": false,
          "hostedBy": null,
          "hostedByWebsite": null,
          "listedProvider": null,
          "partner": null,
          "modified": "2026-03-29T13:38:28.588564",
          "supportingDocuments": [],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/administracion.gob.es",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290047,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "not-green",
          "externalOriginCount": 1,
          "greenCount": 1,
          "notGreenCount": 1,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 70,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/buscador/buscadorsimple.htm|input|text|q|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "q",
            "formContext": "form|get|/buscador/buscadorsimple.htm",
            "hasLabel": false,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 70,
              "urgency": "high",
              "issues": [
                "Missing associated label",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add a programmatic label using <label>, aria-label, or aria-labelledby.",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "Missing associated label",
            "urgency": "high",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 25,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": true,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": false,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Inscribirte como residente - Obtención de la residencia - Residencia - Ciudadanos - Tus derechos y obligaciones en la UE - Tu espacio europeo - Punto de Acceso General",
          "lang": "gl",
          "charset": "",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Inscripción de un ciudadano de la UE  como residente en España: solicitud, plazo y documentación a aportar",
          "robots": "all",
          "canonical": "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/residencia/obtencion-residencia/inscribirte-residente",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 33,
          "tabletSmallTapTargets": 62,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 399,
            "viewportHeight": 864,
            "contentWidth": 399,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 33,
            "oversizedMedia": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 829,
            "viewportHeight": 1193,
            "contentWidth": 829,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 62,
            "oversizedMedia": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 33 small targets on mobile and 62 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 31,
        "urgency": "medium",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": false,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "connection": "Keep-Alive",
            "content-encoding": "gzip",
            "content-type": "text/html;charset=UTF-8",
            "date": "Mon, 30 Mar 2026 00:25:30 GMT",
            "keep-alive": "timeout=15, max=500",
            "referrer-policy": "origin-when-cross-origin,strict-origin-when-cross-origin",
            "server": "Microsoft-IIS/5.0",
            "set-cookie": "VISITOR=returning; Path=/pag_Home/gl/Tu-espacio-europeo/derechos-obligaciones/ciudadanos; HttpOnly; Secure; SameSite=None\nTS01a8e1d0=01d9c3d318bf0950b965bada48d495334398e7a4d81a950e85b01dc930419b68c9a1e8639e95ff7a154a24dc16c6430f061b90f0ea52fcc5b3e1b8ca06f6cbb2c8c1d7490cc60437fa57bb67082ccdad709be5a5ee; Path=/; HttpOnly; Secure; SameSite=None\nTS0146228d=01d9c3d31875eb4ee065abf109a5ef141663ea9e5662999d88da62791f603954b0657e3ad206abe0e840a1f31af532847905d0382b90b7a84781f287b0f8ea376c270e95758790e5f992ab8a462f1118463bf9b8565956db104bfe20987b3f54c98e7c3998; path=/pag_Home/gl/Tu-espacio-europeo/derechos-obligaciones/ciudadanos; HttpOnly; Secure; SameSite=None",
            "strict-transport-security": "max-age=63072000; preload",
            "transfer-encoding": "chunked",
            "vary": "Accept-Encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1;mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add a Content-Security-Policy header",
            "urgency": "high",
            "detail": "Add an appropriate CSP to reduce script injection and resource loading risk."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 30,
        "urgency": "medium",
        "origin": "https://administracion.gob.es",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://administracion.gob.es/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/favicon.ico",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 2405028.2,
        "checks": {
          "hasEffectiveTextCompression": false
        },
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "estimatedSavingsBytes": 1315073,
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "estimatedSavingsBytes": 891965,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "estimatedSavingsBytes": 126680.2,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "estimatedSavingsBytes": 63759,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "estimatedSavingsBytes": 7551,
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings."
          }
        ],
        "recommendations": [
          {
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
          },
          {
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
          },
          {
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 7.37 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 4246227.2,
        "totalEstimatedBlockingMs": 9239,
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable text compression",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat.",
            "estimatedSavingsBytes": 1315073,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,284 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-text-compression"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 1197895,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,170 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 891965,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 871 KiB",
            "urgency": "high",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unused-javascript",
            "title": "Remove unused JavaScript",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code.",
            "estimatedSavingsBytes": 545477,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 533 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-javascript"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9239,
            "displayValue": "Est savings of 9,240 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 126680.2,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 124 KiB",
            "urgency": "medium",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "offscreen-images",
            "title": "Lazy-load offscreen images",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed.",
            "estimatedSavingsBytes": 91115,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 89 KiB",
            "urgency": "medium",
            "sourceAuditId": "offscreen-images"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 63759,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 62 KiB",
            "urgency": "medium",
            "sourceAuditId": "unminified-javascript"
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss.",
            "estimatedSavingsBytes": 7551,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-optimized-images"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 6712,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-responsive-images"
          }
        ],
        "recommendations": [
          {
            "title": "Enable text compression",
            "urgency": "high",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat. Estimated byte savings: 1.25 MB."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "high",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 1.14 MB."
          },
          {
            "title": "Minify CSS",
            "urgency": "high",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 871.06 KB."
          },
          {
            "title": "Remove unused JavaScript",
            "urgency": "high",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code. Estimated byte savings: 532.69 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 9239 ms."
          },
          {
            "title": "Serve images in next-gen formats",
            "urgency": "medium",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 123.71 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1885058
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.80 MB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.80 MB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 30,
        "urgency": "high",
        "transferBytes": 2191130,
        "css": {
          "unusedBytes": 1197895,
          "ratio": 0.5467019300543555,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 545477,
          "duplicatedBytes": 0,
          "ratio": 0.24894780318830922,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "high",
            "estimatedSavingsBytes": 1197895,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          },
          {
            "area": "javascript",
            "title": "Remove unused JavaScript and feature bundles",
            "urgency": "high",
            "estimatedSavingsBytes": 545477,
            "strategy": "Drop unused packages and feature code, or move them behind route-level or interaction-triggered imports.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 35,
        "urgency": "high",
        "transferBytes": 2191130,
        "estimatedDeferrableBytes": 1834487,
        "renderBlockingMs": 9239,
        "breakdown": {
          "offscreenImageSavings": 91115,
          "unusedJavascriptSavings": 545477,
          "unusedCssSavings": 1197895
        },
        "candidates": [
          {
            "title": "Lazy-load offscreen images",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 91115,
            "strategy": "Load below-the-fold images only when they approach the viewport.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Defer non-critical JavaScript",
            "area": "javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 545477,
            "strategy": "Split bundles and load feature code on interaction or route transition.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1197895,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9239,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy stylesheet from administracion.gob.es",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from administracion.gob.es",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 254418,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from administracion.gob.es",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.googletagmanager.com",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 145371,
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 34,
        "urgency": "medium",
        "providerCount": 1,
        "requestCount": 2,
        "transferBytes": 290047,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290047,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "medium",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "medium",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          }
        ]
      },
      "redundancy": {
        "score": 69,
        "urgency": "high",
        "transferBytes": 2191130,
        "estimatedRedundantBytes": 1743372,
        "redundancyRatio": 0.7956497332426647,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 1197895,
            "displayValue": "Est savings of 1,170 KiB"
          },
          {
            "auditId": "unused-javascript",
            "title": "Reduce unused JavaScript",
            "savingsBytes": 545477,
            "displayValue": "Est savings of 533 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "high",
            "estimatedSavingsBytes": 1197895,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce unused javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 545477,
            "auditId": "unused-javascript",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Enable and verify text compression",
            "urgency": "medium",
            "estimatedSavingsBytes": 1315073,
            "auditId": "uses-text-compression",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 47,
        "urgency": "high",
        "totalTransferBytes": 2191130,
        "heavyRequestCount": 6,
        "heavyBytes": 1925265,
        "heavyRatio": 0.8786630642636448,
        "heavyRequests": [
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "transferSize": 1177193,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "transferSize": 254418,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "transferSize": 159823,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "transferSize": 145371,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-4YNNM3J1E0&cx=c&gtm=4e63p1",
            "transferSize": 144676,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/libs/jquery.mCustomScrollbar.css",
            "transferSize": 43784,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 1220977
          },
          {
            "resourceType": "script",
            "count": 3,
            "transferBytes": 544465
          },
          {
            "resourceType": "image",
            "count": 1,
            "transferBytes": 159823
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "administracion.gob.es",
            "count": 4,
            "transferBytes": 1635218
          },
          {
            "domain": "www.googletagmanager.com",
            "count": 2,
            "transferBytes": 290047
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Lazy-load offscreen images and media galleries",
            "urgency": "medium",
            "estimatedSavingsBytes": 91115,
            "strategy": "Load imagery only when it enters the viewport or when a user opens the relevant section.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Split JavaScript by route or interaction",
            "urgency": "high",
            "estimatedSavingsBytes": 545477,
            "strategy": "Move non-critical bundles behind route-level or event-driven imports so they are only fetched on demand.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy stylesheet asset from administracion.gob.es",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "strategy": "Split this stylesheet so component-specific CSS is delivered only when the component is rendered.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 254418,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0,
          "displayValue": "11.9 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 11.9 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": 0.03,
          "displayValue": "12.3 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- Current value: 12.3 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": 0,
          "displayValue": "Est savings of 533 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- Current value: Est savings of 533 KiB\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 1,170 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 1,170 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 9,240 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 9,240 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": 0,
          "displayValue": "Est savings of 1,284 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- Current value: Est savings of 1,284 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 124 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 124 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 7 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- Current value: Est savings of 7 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 89 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- Current value: Est savings of 89 KiB\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://administracion.gob.es/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/viajes/documentos/pasaportes-perdidos",
      "status": "ok",
      "finalUrl": "https://administracion.gob.es/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/viajes/documentos/pasaportes-perdidos",
      "performanceScore": 0.56,
      "bestPracticesScore": 0.79,
      "transferBytes": 2190834,
      "co2Grams": 0.8392677558876,
      "greenWeb": {
        "page": {
          "hostname": "administracion.gob.es",
          "checked": true,
          "status": "not-green",
          "green": false,
          "hostedBy": null,
          "hostedByWebsite": null,
          "listedProvider": null,
          "partner": null,
          "modified": "2026-03-29T13:38:28.588564",
          "supportingDocuments": [],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/administracion.gob.es",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290047,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "not-green",
          "externalOriginCount": 1,
          "greenCount": 1,
          "notGreenCount": 1,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 70,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/buscador/buscadorsimple.htm|input|text|q|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "q",
            "formContext": "form|get|/buscador/buscadorsimple.htm",
            "hasLabel": false,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 70,
              "urgency": "high",
              "issues": [
                "Missing associated label",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add a programmatic label using <label>, aria-label, or aria-labelledby.",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "Missing associated label",
            "urgency": "high",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 35,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": false,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Lost or stolen passports - Travel documents - Travel within the EU - Citizens - Your rights and obligations in the EU - Tu espacio europeo - Punto de Acceso General",
          "lang": "en",
          "charset": "",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Citizens of Spain or of other EU Member States whose passport or identity card is lost or stolen; emergency travel documents and special agreements or exceptions.",
          "robots": "all",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 42,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 31,
          "tabletSmallTapTargets": 60,
          "fixedWidthOffenders": 6,
          "oversizedMedia": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 399,
            "viewportHeight": 864,
            "contentWidth": 399,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 5,
            "smallTapTargets": 31,
            "oversizedMedia": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 829,
            "viewportHeight": 1193,
            "contentWidth": 829,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 1,
            "smallTapTargets": 60,
            "oversizedMedia": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 31 small targets on mobile and 60 on tablet."
          },
          {
            "title": "Refactor fixed-width components",
            "urgency": "medium",
            "detail": "6 element(s) exceeded viewport width in tested layouts; use responsive component constraints."
          }
        ]
      },
      "securityLight": {
        "score": 31,
        "urgency": "medium",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": false,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "connection": "Keep-Alive",
            "content-encoding": "gzip",
            "content-length": "14621",
            "content-type": "text/html;charset=UTF-8",
            "date": "Mon, 30 Mar 2026 00:25:50 GMT",
            "keep-alive": "timeout=15, max=500",
            "referrer-policy": "origin-when-cross-origin,strict-origin-when-cross-origin",
            "server": "Microsoft-IIS/5.0",
            "set-cookie": "VISITOR=returning; Path=/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/ciudadanos; HttpOnly; Secure; SameSite=None\nTS01a8e1d0=01d9c3d318bf0950b965bada48d495334398e7a4d81a950e85b01dc930419b68c9a1e8639e95ff7a154a24dc16c6430f061b90f0ea52fcc5b3e1b8ca06f6cbb2c8c1d7490cc60437fa57bb67082ccdad709be5a5ee; Path=/; HttpOnly; Secure; SameSite=None\nTS01cc21ed=01d9c3d31875eb4ee065abf109a5ef141663ea9e5662999d88da62791f603954b0657e3ad206abe0e840a1f31af532847905d0382b90b7a84781f287b0f8ea376c270e95758790e5f992ab8a462f1118463bf9b8565956db104bfe20987b3f54c98e7c3998; path=/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/ciudadanos; HttpOnly; Secure; SameSite=None",
            "strict-transport-security": "max-age=63072000; preload",
            "vary": "Accept-Encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1;mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add a Content-Security-Policy header",
            "urgency": "high",
            "detail": "Add an appropriate CSP to reduce script injection and resource loading risk."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 30,
        "urgency": "medium",
        "origin": "https://administracion.gob.es",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://administracion.gob.es/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/favicon.ico",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 2403496.2,
        "checks": {
          "hasEffectiveTextCompression": false
        },
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "estimatedSavingsBytes": 1313541,
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "estimatedSavingsBytes": 891965,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "estimatedSavingsBytes": 126680.2,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "estimatedSavingsBytes": 63759,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "estimatedSavingsBytes": 7551,
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings."
          }
        ],
        "recommendations": [
          {
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
          },
          {
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
          },
          {
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 7.37 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 4230904.2,
        "totalEstimatedBlockingMs": 9267,
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable text compression",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat.",
            "estimatedSavingsBytes": 1313541,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,283 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-text-compression"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 1197809,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,170 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 891965,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 871 KiB",
            "urgency": "high",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unused-javascript",
            "title": "Remove unused JavaScript",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code.",
            "estimatedSavingsBytes": 531772,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 519 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-javascript"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9267,
            "displayValue": "Est savings of 9,270 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 126680.2,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 124 KiB",
            "urgency": "medium",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "offscreen-images",
            "title": "Lazy-load offscreen images",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed.",
            "estimatedSavingsBytes": 91115,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 89 KiB",
            "urgency": "medium",
            "sourceAuditId": "offscreen-images"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 63759,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 62 KiB",
            "urgency": "medium",
            "sourceAuditId": "unminified-javascript"
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss.",
            "estimatedSavingsBytes": 7551,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-optimized-images"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 6712,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-responsive-images"
          }
        ],
        "recommendations": [
          {
            "title": "Enable text compression",
            "urgency": "high",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat. Estimated byte savings: 1.25 MB."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "high",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 1.14 MB."
          },
          {
            "title": "Minify CSS",
            "urgency": "high",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 871.06 KB."
          },
          {
            "title": "Remove unused JavaScript",
            "urgency": "high",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code. Estimated byte savings: 519.31 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 9267 ms."
          },
          {
            "title": "Serve images in next-gen formats",
            "urgency": "medium",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 123.71 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1883351
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.80 MB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.80 MB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 30,
        "urgency": "high",
        "transferBytes": 2190834,
        "css": {
          "unusedBytes": 1197809,
          "ratio": 0.5467365396009009,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 531772,
          "duplicatedBytes": 0,
          "ratio": 0.24272582952428162,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "high",
            "estimatedSavingsBytes": 1197809,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          },
          {
            "area": "javascript",
            "title": "Remove unused JavaScript and feature bundles",
            "urgency": "high",
            "estimatedSavingsBytes": 531772,
            "strategy": "Drop unused packages and feature code, or move them behind route-level or interaction-triggered imports.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 35,
        "urgency": "high",
        "transferBytes": 2190834,
        "estimatedDeferrableBytes": 1820696,
        "renderBlockingMs": 9267,
        "breakdown": {
          "offscreenImageSavings": 91115,
          "unusedJavascriptSavings": 531772,
          "unusedCssSavings": 1197809
        },
        "candidates": [
          {
            "title": "Lazy-load offscreen images",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 91115,
            "strategy": "Load below-the-fold images only when they approach the viewport.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Defer non-critical JavaScript",
            "area": "javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 531772,
            "strategy": "Split bundles and load feature code on interaction or route transition.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1197809,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9267,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy stylesheet from administracion.gob.es",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from administracion.gob.es",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 254418,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from administracion.gob.es",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.googletagmanager.com",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 145371,
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 34,
        "urgency": "medium",
        "providerCount": 1,
        "requestCount": 2,
        "transferBytes": 290047,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290047,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "medium",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "medium",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          }
        ]
      },
      "redundancy": {
        "score": 66,
        "urgency": "high",
        "transferBytes": 2190834,
        "estimatedRedundantBytes": 1729581,
        "redundancyRatio": 0.7894623691251824,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 1197809,
            "displayValue": "Est savings of 1,170 KiB"
          },
          {
            "auditId": "unused-javascript",
            "title": "Reduce unused JavaScript",
            "savingsBytes": 531772,
            "displayValue": "Est savings of 519 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "high",
            "estimatedSavingsBytes": 1197809,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce unused javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 531772,
            "auditId": "unused-javascript",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Enable and verify text compression",
            "urgency": "medium",
            "estimatedSavingsBytes": 1313541,
            "auditId": "uses-text-compression",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 47,
        "urgency": "high",
        "totalTransferBytes": 2190834,
        "heavyRequestCount": 6,
        "heavyBytes": 1925265,
        "heavyRatio": 0.8787817789937531,
        "heavyRequests": [
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "transferSize": 1177193,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "transferSize": 254418,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "transferSize": 159823,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "transferSize": 145371,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-4YNNM3J1E0&cx=c&gtm=4e63p1",
            "transferSize": 144676,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/libs/jquery.mCustomScrollbar.css",
            "transferSize": 43784,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 1220977
          },
          {
            "resourceType": "script",
            "count": 3,
            "transferBytes": 544465
          },
          {
            "resourceType": "image",
            "count": 1,
            "transferBytes": 159823
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "administracion.gob.es",
            "count": 4,
            "transferBytes": 1635218
          },
          {
            "domain": "www.googletagmanager.com",
            "count": 2,
            "transferBytes": 290047
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Lazy-load offscreen images and media galleries",
            "urgency": "medium",
            "estimatedSavingsBytes": 91115,
            "strategy": "Load imagery only when it enters the viewport or when a user opens the relevant section.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Split JavaScript by route or interaction",
            "urgency": "high",
            "estimatedSavingsBytes": 531772,
            "strategy": "Move non-critical bundles behind route-level or event-driven imports so they are only fetched on demand.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy stylesheet asset from administracion.gob.es",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "strategy": "Split this stylesheet so component-specific CSS is delivered only when the component is rendered.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 254418,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0,
          "displayValue": "11.3 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 11.3 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": 0.06,
          "displayValue": "10.9 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- Current value: 10.9 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": 0,
          "displayValue": "Est savings of 519 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- Current value: Est savings of 519 KiB\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 1,170 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 1,170 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 9,270 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 9,270 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": 0,
          "displayValue": "Est savings of 1,283 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- Current value: Est savings of 1,283 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 124 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 124 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 7 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- Current value: Est savings of 7 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 89 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- Current value: Est savings of 89 KiB\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://administracion.gob.es/pag_Home/ca/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/trabajo-jubilacion/seguridad-social-pensiones/Pensiones-clases-pasivas/coordinacion",
      "status": "ok",
      "finalUrl": "https://administracion.gob.es/pag_Home/ca/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/trabajo-jubilacion/seguridad-social-pensiones/Pensiones-clases-pasivas/coordinacion",
      "performanceScore": 0.55,
      "bestPracticesScore": 0.79,
      "transferBytes": 2187159,
      "co2Grams": 0.8378599317426001,
      "greenWeb": {
        "page": {
          "hostname": "administracion.gob.es",
          "checked": true,
          "status": "not-green",
          "green": false,
          "hostedBy": null,
          "hostedByWebsite": null,
          "listedProvider": null,
          "partner": null,
          "modified": "2026-03-29T13:38:28.588564",
          "supportingDocuments": [],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/administracion.gob.es",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290047,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "not-green",
          "externalOriginCount": 1,
          "greenCount": 1,
          "notGreenCount": 1,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 70,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/buscador/buscadorsimple.htm|input|text|q|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "q",
            "formContext": "form|get|/buscador/buscadorsimple.htm",
            "hasLabel": false,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 70,
              "urgency": "high",
              "issues": [
                "Missing associated label",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add a programmatic label using <label>, aria-label, or aria-labelledby.",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "Missing associated label",
            "urgency": "high",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 25,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": true,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": false,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Coordinación de los sistemas de Seguridad Social en el régimen de Clases Pasivas - Pensiones de clases pasivas - Seguridad social y pensiones - Trabajo y jubilación - Ciudadanos - Tus derechos y obligaciones en la UE - Tu espacio europeo - Punto de Acceso General",
          "lang": "ca",
          "charset": "",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Conoce qué requisitos debes reunir, a qué tienes derecho, cómo puedes solicitar las pensiones.",
          "robots": "all",
          "canonical": "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/trabajo-jubilacion/seguridad-social-pensiones/Pensiones-clases-pasivas/coordinacion",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 32,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 31,
          "tabletSmallTapTargets": 63,
          "fixedWidthOffenders": 1,
          "oversizedMedia": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 399,
            "viewportHeight": 864,
            "contentWidth": 399,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 1,
            "smallTapTargets": 31,
            "oversizedMedia": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 829,
            "viewportHeight": 1193,
            "contentWidth": 829,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 63,
            "oversizedMedia": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 31 small targets on mobile and 63 on tablet."
          },
          {
            "title": "Refactor fixed-width components",
            "urgency": "medium",
            "detail": "1 element(s) exceeded viewport width in tested layouts; use responsive component constraints."
          }
        ]
      },
      "securityLight": {
        "score": 31,
        "urgency": "medium",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": false,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "connection": "Keep-Alive",
            "content-encoding": "gzip",
            "content-type": "text/html;charset=UTF-8",
            "date": "Mon, 30 Mar 2026 00:26:15 GMT",
            "keep-alive": "timeout=15, max=500",
            "referrer-policy": "origin-when-cross-origin,strict-origin-when-cross-origin",
            "server": "Microsoft-IIS/5.0",
            "set-cookie": "VISITOR=returning; Path=/pag_Home/ca/Tu-espacio-europeo/derechos-obligaciones/ciudadanos; HttpOnly; Secure; SameSite=None\nTS01a8e1d0=01d9c3d318bf0950b965bada48d495334398e7a4d81a950e85b01dc930419b68c9a1e8639e95ff7a154a24dc16c6430f061b90f0ea52fcc5b3e1b8ca06f6cbb2c8c1d7490cc60437fa57bb67082ccdad709be5a5ee; Path=/; HttpOnly; Secure; SameSite=None\nTS01e460c5=01d9c3d31875eb4ee065abf109a5ef141663ea9e5662999d88da62791f603954b0657e3ad206abe0e840a1f31af532847905d0382b90b7a84781f287b0f8ea376c270e95758790e5f992ab8a462f1118463bf9b8565956db104bfe20987b3f54c98e7c3998; path=/pag_Home/ca/Tu-espacio-europeo/derechos-obligaciones/ciudadanos; HttpOnly; Secure; SameSite=None",
            "strict-transport-security": "max-age=63072000; preload",
            "transfer-encoding": "chunked",
            "vary": "Accept-Encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1;mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add a Content-Security-Policy header",
            "urgency": "high",
            "detail": "Add an appropriate CSP to reduce script injection and resource loading risk."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 30,
        "urgency": "medium",
        "origin": "https://administracion.gob.es",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://administracion.gob.es/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/favicon.ico",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 2403496.2,
        "checks": {
          "hasEffectiveTextCompression": false
        },
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "estimatedSavingsBytes": 1313541,
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "estimatedSavingsBytes": 891965,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "estimatedSavingsBytes": 126680.2,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "estimatedSavingsBytes": 63759,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "estimatedSavingsBytes": 7551,
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings."
          }
        ],
        "recommendations": [
          {
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
          },
          {
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
          },
          {
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 7.37 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 4247199.2,
        "totalEstimatedBlockingMs": 8950,
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable text compression",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat.",
            "estimatedSavingsBytes": 1313541,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,283 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-text-compression"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 1198527,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,170 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 891965,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 871 KiB",
            "urgency": "high",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unused-javascript",
            "title": "Remove unused JavaScript",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code.",
            "estimatedSavingsBytes": 547349,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 535 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-javascript"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 8950,
            "displayValue": "Est savings of 8,950 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 126680.2,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 124 KiB",
            "urgency": "medium",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "offscreen-images",
            "title": "Lazy-load offscreen images",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed.",
            "estimatedSavingsBytes": 91115,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 89 KiB",
            "urgency": "medium",
            "sourceAuditId": "offscreen-images"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 63759,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 62 KiB",
            "urgency": "medium",
            "sourceAuditId": "unminified-javascript"
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss.",
            "estimatedSavingsBytes": 7551,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-optimized-images"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 6712,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-responsive-images"
          }
        ],
        "recommendations": [
          {
            "title": "Enable text compression",
            "urgency": "high",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat. Estimated byte savings: 1.25 MB."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "high",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 1.14 MB."
          },
          {
            "title": "Minify CSS",
            "urgency": "high",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 871.06 KB."
          },
          {
            "title": "Remove unused JavaScript",
            "urgency": "high",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code. Estimated byte savings: 534.52 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 8950 ms."
          },
          {
            "title": "Serve images in next-gen formats",
            "urgency": "medium",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 123.71 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1881659
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.79 MB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.79 MB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 30,
        "urgency": "high",
        "transferBytes": 2187159,
        "css": {
          "unusedBytes": 1198527,
          "ratio": 0.5479834799390442,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 547349,
          "duplicatedBytes": 0,
          "ratio": 0.250255697002367,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "high",
            "estimatedSavingsBytes": 1198527,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          },
          {
            "area": "javascript",
            "title": "Remove unused JavaScript and feature bundles",
            "urgency": "high",
            "estimatedSavingsBytes": 547349,
            "strategy": "Drop unused packages and feature code, or move them behind route-level or interaction-triggered imports.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 35,
        "urgency": "high",
        "transferBytes": 2187159,
        "estimatedDeferrableBytes": 1836991,
        "renderBlockingMs": 8950,
        "breakdown": {
          "offscreenImageSavings": 91115,
          "unusedJavascriptSavings": 547349,
          "unusedCssSavings": 1198527
        },
        "candidates": [
          {
            "title": "Lazy-load offscreen images",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 91115,
            "strategy": "Load below-the-fold images only when they approach the viewport.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Defer non-critical JavaScript",
            "area": "javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 547349,
            "strategy": "Split bundles and load feature code on interaction or route transition.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1198527,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 8950,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy stylesheet from administracion.gob.es",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from administracion.gob.es",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 254411,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from administracion.gob.es",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 159817,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.googletagmanager.com",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 145371,
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 34,
        "urgency": "medium",
        "providerCount": 1,
        "requestCount": 2,
        "transferBytes": 290047,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290047,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "medium",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "medium",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          }
        ]
      },
      "redundancy": {
        "score": 66,
        "urgency": "high",
        "transferBytes": 2187159,
        "estimatedRedundantBytes": 1745876,
        "redundancyRatio": 0.7982391769414112,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 1198527,
            "displayValue": "Est savings of 1,170 KiB"
          },
          {
            "auditId": "unused-javascript",
            "title": "Reduce unused JavaScript",
            "savingsBytes": 547349,
            "displayValue": "Est savings of 535 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "high",
            "estimatedSavingsBytes": 1198527,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce unused javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 547349,
            "auditId": "unused-javascript",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Enable and verify text compression",
            "urgency": "medium",
            "estimatedSavingsBytes": 1313541,
            "auditId": "uses-text-compression",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 47,
        "urgency": "high",
        "totalTransferBytes": 2187159,
        "heavyRequestCount": 6,
        "heavyBytes": 1925252,
        "heavyRatio": 0.8802524187770527,
        "heavyRequests": [
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "transferSize": 1177193,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "transferSize": 254411,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "transferSize": 159817,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "transferSize": 145371,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-4YNNM3J1E0&cx=c&gtm=4e63p1",
            "transferSize": 144676,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/libs/jquery.mCustomScrollbar.css",
            "transferSize": 43784,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 1220977
          },
          {
            "resourceType": "script",
            "count": 3,
            "transferBytes": 544458
          },
          {
            "resourceType": "image",
            "count": 1,
            "transferBytes": 159817
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "administracion.gob.es",
            "count": 4,
            "transferBytes": 1635205
          },
          {
            "domain": "www.googletagmanager.com",
            "count": 2,
            "transferBytes": 290047
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Lazy-load offscreen images and media galleries",
            "urgency": "medium",
            "estimatedSavingsBytes": 91115,
            "strategy": "Load imagery only when it enters the viewport or when a user opens the relevant section.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Split JavaScript by route or interaction",
            "urgency": "high",
            "estimatedSavingsBytes": 547349,
            "strategy": "Move non-critical bundles behind route-level or event-driven imports so they are only fetched on demand.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy stylesheet asset from administracion.gob.es",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "strategy": "Split this stylesheet so component-specific CSS is delivered only when the component is rendered.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 254411,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 159817,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0,
          "displayValue": "11.6 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 11.6 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": 0.01,
          "displayValue": "14.7 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- Current value: 14.7 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": 0,
          "displayValue": "Est savings of 535 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- Current value: Est savings of 535 KiB\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 1,170 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 1,170 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 8,950 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 8,950 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": 0,
          "displayValue": "Est savings of 1,283 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- Current value: Est savings of 1,283 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 124 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 124 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 7 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- Current value: Est savings of 7 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 89 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- Current value: Est savings of 89 KiB\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://administracion.gob.es/pag_Home/gl/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/viajes/pasajeros/tren-autobus",
      "status": "ok",
      "finalUrl": "https://administracion.gob.es/pag_Home/gl/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/viajes/pasajeros/tren-autobus",
      "performanceScore": 0.55,
      "bestPracticesScore": 0.79,
      "transferBytes": 2024040,
      "co2Grams": 0.7753720768560001,
      "greenWeb": {
        "page": {
          "hostname": "administracion.gob.es",
          "checked": true,
          "status": "not-green",
          "green": false,
          "hostedBy": null,
          "hostedByWebsite": null,
          "listedProvider": null,
          "partner": null,
          "modified": "2026-03-29T13:38:28.588564",
          "supportingDocuments": [],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/administracion.gob.es",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 145368,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "not-green",
          "externalOriginCount": 1,
          "greenCount": 1,
          "notGreenCount": 1,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 70,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/buscador/buscadorsimple.htm|input|text|q|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "q",
            "formContext": "form|get|/buscador/buscadorsimple.htm",
            "hasLabel": false,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 70,
              "urgency": "high",
              "issues": [
                "Missing associated label",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add a programmatic label using <label>, aria-label, or aria-labelledby.",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "Missing associated label",
            "urgency": "high",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 45,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": false,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": false,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Error - Punto de Acceso General",
          "lang": "es",
          "charset": "",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "",
          "robots": "all",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Add meta description",
            "urgency": "medium",
            "detail": "Provide a concise description to improve machine interpretation and preview quality."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 26,
        "urgency": "low",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 9,
          "tabletSmallTapTargets": 41,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 399,
            "viewportHeight": 864,
            "contentWidth": 399,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 9,
            "oversizedMedia": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 829,
            "viewportHeight": 1193,
            "contentWidth": 829,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 41,
            "oversizedMedia": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "medium",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 9 small targets on mobile and 41 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 31,
        "urgency": "medium",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": false,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "connection": "Keep-Alive",
            "content-encoding": "gzip",
            "content-length": "8788",
            "content-type": "text/html;charset=UTF-8",
            "date": "Mon, 30 Mar 2026 00:26:37 GMT",
            "keep-alive": "timeout=15, max=500",
            "referrer-policy": "origin-when-cross-origin,strict-origin-when-cross-origin",
            "server": "Microsoft-IIS/5.0",
            "set-cookie": "VISITOR=returning; Path=/pag_Home/Error.html; HttpOnly; Secure; SameSite=None\nTS01a8e1d0=01d9c3d318bf0950b965bada48d495334398e7a4d81a950e85b01dc930419b68c9a1e8639e95ff7a154a24dc16c6430f061b90f0ea52fcc5b3e1b8ca06f6cbb2c8c1d7490cc60437fa57bb67082ccdad709be5a5ee; Path=/; HttpOnly; Secure; SameSite=None\nTS01344f0d=01d9c3d318e30d71c8f2baaadc7a422b508ec8f1b51a950e85b01dc930419b68c9a1e8639e95ff7a154a24dc16c6430f061b90f0ea52fcc5b3e1b8ca06f6cbb2c8c1d7490c1d9f388aaa462aa361eb925e482f499148a2e0fb86903edf66edba02ee20c5cf; path=/pag_Home/Error.html; HttpOnly; Secure; SameSite=None",
            "strict-transport-security": "max-age=63072000; preload",
            "vary": "Accept-Encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1;mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add a Content-Security-Policy header",
            "urgency": "high",
            "detail": "Add an appropriate CSP to reduce script injection and resource loading risk."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 30,
        "urgency": "medium",
        "origin": "https://administracion.gob.es",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://administracion.gob.es/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/favicon.ico",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 2403496.2,
        "checks": {
          "hasEffectiveTextCompression": false
        },
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "estimatedSavingsBytes": 1313541,
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "estimatedSavingsBytes": 891965,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "estimatedSavingsBytes": 126680.2,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "estimatedSavingsBytes": 63759,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "estimatedSavingsBytes": 7551,
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings."
          }
        ],
        "recommendations": [
          {
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
          },
          {
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
          },
          {
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 7.37 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 4163263.2,
        "totalEstimatedBlockingMs": 9167,
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable text compression",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat.",
            "estimatedSavingsBytes": 1313541,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,283 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-text-compression"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 1202481,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,174 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 891965,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 871 KiB",
            "urgency": "high",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unused-javascript",
            "title": "Remove unused JavaScript",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code.",
            "estimatedSavingsBytes": 481865,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 471 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-javascript"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9167,
            "displayValue": "Est savings of 9,170 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 126680.2,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 124 KiB",
            "urgency": "medium",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "offscreen-images",
            "title": "Lazy-load offscreen images",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed.",
            "estimatedSavingsBytes": 75421,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 74 KiB",
            "urgency": "medium",
            "sourceAuditId": "offscreen-images"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 63759,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 62 KiB",
            "urgency": "medium",
            "sourceAuditId": "unminified-javascript"
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss.",
            "estimatedSavingsBytes": 7551,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-optimized-images"
          }
        ],
        "recommendations": [
          {
            "title": "Enable text compression",
            "urgency": "high",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat. Estimated byte savings: 1.25 MB."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "high",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 1.15 MB."
          },
          {
            "title": "Minify CSS",
            "urgency": "high",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 871.06 KB."
          },
          {
            "title": "Remove unused JavaScript",
            "urgency": "high",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code. Estimated byte savings: 470.57 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 9167 ms."
          },
          {
            "title": "Serve images in next-gen formats",
            "urgency": "medium",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 123.71 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1867132
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.78 MB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.78 MB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 32,
        "urgency": "high",
        "transferBytes": 2024040,
        "css": {
          "unusedBytes": 1202481,
          "ratio": 0.5940994249125512,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 481865,
          "duplicatedBytes": 0,
          "ratio": 0.23807088792711606,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "high",
            "estimatedSavingsBytes": 1202481,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          },
          {
            "area": "javascript",
            "title": "Remove unused JavaScript and feature bundles",
            "urgency": "high",
            "estimatedSavingsBytes": 481865,
            "strategy": "Drop unused packages and feature code, or move them behind route-level or interaction-triggered imports.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 35,
        "urgency": "high",
        "transferBytes": 2024040,
        "estimatedDeferrableBytes": 1759767,
        "renderBlockingMs": 9167,
        "breakdown": {
          "offscreenImageSavings": 75421,
          "unusedJavascriptSavings": 481865,
          "unusedCssSavings": 1202481
        },
        "candidates": [
          {
            "title": "Lazy-load offscreen images",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 75421,
            "strategy": "Load below-the-fold images only when they approach the viewport.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Defer non-critical JavaScript",
            "area": "javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 481865,
            "strategy": "Split bundles and load feature code on interaction or route transition.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1202481,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9167,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy stylesheet from administracion.gob.es",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from administracion.gob.es",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 254411,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from administracion.gob.es",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.googletagmanager.com",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 145368,
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 17,
        "urgency": "low",
        "providerCount": 1,
        "requestCount": 1,
        "transferBytes": 145368,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 145368,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "low",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          }
        ]
      },
      "redundancy": {
        "score": 71,
        "urgency": "high",
        "transferBytes": 2024040,
        "estimatedRedundantBytes": 1684346,
        "redundancyRatio": 0.8321703128396672,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 1202481,
            "displayValue": "Est savings of 1,174 KiB"
          },
          {
            "auditId": "unused-javascript",
            "title": "Reduce unused JavaScript",
            "savingsBytes": 481865,
            "displayValue": "Est savings of 471 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "high",
            "estimatedSavingsBytes": 1202481,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce unused javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 481865,
            "auditId": "unused-javascript",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Enable and verify text compression",
            "urgency": "medium",
            "estimatedSavingsBytes": 1313541,
            "auditId": "uses-text-compression",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 46,
        "urgency": "high",
        "totalTransferBytes": 2024040,
        "heavyRequestCount": 5,
        "heavyBytes": 1780579,
        "heavyRatio": 0.8797153218315844,
        "heavyRequests": [
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "transferSize": 1177193,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "transferSize": 254411,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "transferSize": 159823,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "transferSize": 145368,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/libs/jquery.mCustomScrollbar.css",
            "transferSize": 43784,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 1220977
          },
          {
            "resourceType": "script",
            "count": 2,
            "transferBytes": 399779
          },
          {
            "resourceType": "image",
            "count": 1,
            "transferBytes": 159823
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "administracion.gob.es",
            "count": 4,
            "transferBytes": 1635211
          },
          {
            "domain": "www.googletagmanager.com",
            "count": 1,
            "transferBytes": 145368
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Lazy-load offscreen images and media galleries",
            "urgency": "medium",
            "estimatedSavingsBytes": 75421,
            "strategy": "Load imagery only when it enters the viewport or when a user opens the relevant section.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Split JavaScript by route or interaction",
            "urgency": "high",
            "estimatedSavingsBytes": 481865,
            "strategy": "Move non-critical bundles behind route-level or event-driven imports so they are only fetched on demand.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy stylesheet asset from administracion.gob.es",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "strategy": "Split this stylesheet so component-specific CSS is delivered only when the component is rendered.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 254411,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0,
          "displayValue": "11.9 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 11.9 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": 0.03,
          "displayValue": "12.2 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- Current value: 12.2 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": 0,
          "displayValue": "Est savings of 471 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- Current value: Est savings of 471 KiB\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 1,174 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 1,174 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 9,170 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 9,170 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": 0,
          "displayValue": "Est savings of 1,283 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- Current value: Est savings of 1,283 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 124 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 124 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 7 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- Current value: Est savings of 7 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 74 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- Current value: Est savings of 74 KiB\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://administracion.gob.es/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/empresas/inicio-gestion-cierre/fusion-venta/sector-farmaceutico",
      "status": "ok",
      "finalUrl": "https://administracion.gob.es/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/empresas/inicio-gestion-cierre/fusion-venta/sector-farmaceutico",
      "performanceScore": 0.56,
      "bestPracticesScore": 0.79,
      "transferBytes": 2188341,
      "co2Grams": 0.8383127339573999,
      "greenWeb": {
        "page": {
          "hostname": "administracion.gob.es",
          "checked": true,
          "status": "not-green",
          "green": false,
          "hostedBy": null,
          "hostedByWebsite": null,
          "listedProvider": null,
          "partner": null,
          "modified": "2026-03-29T13:38:28.588564",
          "supportingDocuments": [],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/administracion.gob.es",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290047,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "not-green",
          "externalOriginCount": 1,
          "greenCount": 1,
          "notGreenCount": 1,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 70,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/buscador/buscadorsimple.htm|input|text|q|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "q",
            "formContext": "form|get|/buscador/buscadorsimple.htm",
            "hasLabel": false,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 70,
              "urgency": "high",
              "issues": [
                "Missing associated label",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add a programmatic label using <label>, aria-label, or aria-labelledby.",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "Missing associated label",
            "urgency": "high",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 25,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": true,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": false,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Fusión o venta de empresas: Sector farmacéutico - Fusión de sociedades o venta de empresas - Puesta en marcha, gestión y cierre de una empresa - Empresas - Tus derechos y obligaciones en la UE - Tu espacio europeo - Punto de Acceso General",
          "lang": "eu",
          "charset": "",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Conoce la fusión o venta de los laboratorios farmacéuticos, fabricantes de principios activos de uso farmacéutico, Instalaciones de productos sanitarios, actividades de fabricación y/o importación de productos cosmético, de cuidado personal, de productos biocidas competencia de la AEMPS",
          "robots": "all",
          "canonical": "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/empresas/inicio-gestion-cierre/fusion-venta/sector-farmaceutico",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 40,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 37,
          "tabletSmallTapTargets": 75,
          "fixedWidthOffenders": 5,
          "oversizedMedia": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 399,
            "viewportHeight": 864,
            "contentWidth": 399,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 4,
            "smallTapTargets": 37,
            "oversizedMedia": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 829,
            "viewportHeight": 1193,
            "contentWidth": 829,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 1,
            "smallTapTargets": 75,
            "oversizedMedia": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 37 small targets on mobile and 75 on tablet."
          },
          {
            "title": "Refactor fixed-width components",
            "urgency": "medium",
            "detail": "5 element(s) exceeded viewport width in tested layouts; use responsive component constraints."
          }
        ]
      },
      "securityLight": {
        "score": 31,
        "urgency": "medium",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": false,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "connection": "Keep-Alive",
            "content-encoding": "gzip",
            "content-type": "text/html;charset=UTF-8",
            "date": "Mon, 30 Mar 2026 00:26:59 GMT",
            "keep-alive": "timeout=15, max=500",
            "referrer-policy": "origin-when-cross-origin,strict-origin-when-cross-origin",
            "server": "Microsoft-IIS/5.0",
            "set-cookie": "VISITOR=returning; Path=/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/empresas; HttpOnly; Secure; SameSite=None\nTS01a8e1d0=01d9c3d318bf0950b965bada48d495334398e7a4d81a950e85b01dc930419b68c9a1e8639e95ff7a154a24dc16c6430f061b90f0ea52fcc5b3e1b8ca06f6cbb2c8c1d7490cc60437fa57bb67082ccdad709be5a5ee; Path=/; HttpOnly; Secure; SameSite=None\nTS01298ba9=01d9c3d3183d0ab5e35f0a4d3b0e06f02e6973180380529b1b9ba56384d07a19b66567890ae44783a444bdd5d48d6a967bacc4b9ad4bff902aea9909935fb9326af3d6d004f98a4d48eaff3a52021502918d296d1fe81761193e34385adc30c5a064c0078b; path=/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/empresas; HttpOnly; Secure; SameSite=None",
            "strict-transport-security": "max-age=63072000; preload",
            "transfer-encoding": "chunked",
            "vary": "Accept-Encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1;mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add a Content-Security-Policy header",
            "urgency": "high",
            "detail": "Add an appropriate CSP to reduce script injection and resource loading risk."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 30,
        "urgency": "medium",
        "origin": "https://administracion.gob.es",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://administracion.gob.es/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/favicon.ico",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 2403496.2,
        "checks": {
          "hasEffectiveTextCompression": false
        },
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "estimatedSavingsBytes": 1313541,
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "estimatedSavingsBytes": 891965,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "estimatedSavingsBytes": 126680.2,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "estimatedSavingsBytes": 63759,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "estimatedSavingsBytes": 7551,
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings."
          }
        ],
        "recommendations": [
          {
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
          },
          {
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
          },
          {
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 7.37 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 4244195.2,
        "totalEstimatedBlockingMs": 9457,
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable text compression",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat.",
            "estimatedSavingsBytes": 1313541,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,283 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-text-compression"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 1197937,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,170 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 891965,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 871 KiB",
            "urgency": "high",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unused-javascript",
            "title": "Remove unused JavaScript",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code.",
            "estimatedSavingsBytes": 544935,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 532 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-javascript"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9457,
            "displayValue": "Est savings of 9,460 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 126680.2,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 124 KiB",
            "urgency": "medium",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "offscreen-images",
            "title": "Lazy-load offscreen images",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed.",
            "estimatedSavingsBytes": 91115,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 89 KiB",
            "urgency": "medium",
            "sourceAuditId": "offscreen-images"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 63759,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 62 KiB",
            "urgency": "medium",
            "sourceAuditId": "unminified-javascript"
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss.",
            "estimatedSavingsBytes": 7551,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-optimized-images"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 6712,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-responsive-images"
          }
        ],
        "recommendations": [
          {
            "title": "Enable text compression",
            "urgency": "high",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat. Estimated byte savings: 1.25 MB."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "high",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 1.14 MB."
          },
          {
            "title": "Minify CSS",
            "urgency": "high",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 871.06 KB."
          },
          {
            "title": "Remove unused JavaScript",
            "urgency": "high",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code. Estimated byte savings: 532.16 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 9457 ms."
          },
          {
            "title": "Serve images in next-gen formats",
            "urgency": "medium",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 123.71 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1881905
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.79 MB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.79 MB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 30,
        "urgency": "high",
        "transferBytes": 2188341,
        "css": {
          "unusedBytes": 1197937,
          "ratio": 0.547417884141457,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 544935,
          "duplicatedBytes": 0,
          "ratio": 0.249017406336581,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "high",
            "estimatedSavingsBytes": 1197937,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          },
          {
            "area": "javascript",
            "title": "Remove unused JavaScript and feature bundles",
            "urgency": "high",
            "estimatedSavingsBytes": 544935,
            "strategy": "Drop unused packages and feature code, or move them behind route-level or interaction-triggered imports.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 35,
        "urgency": "high",
        "transferBytes": 2188341,
        "estimatedDeferrableBytes": 1833987,
        "renderBlockingMs": 9457,
        "breakdown": {
          "offscreenImageSavings": 91115,
          "unusedJavascriptSavings": 544935,
          "unusedCssSavings": 1197937
        },
        "candidates": [
          {
            "title": "Lazy-load offscreen images",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 91115,
            "strategy": "Load below-the-fold images only when they approach the viewport.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Defer non-critical JavaScript",
            "area": "javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 544935,
            "strategy": "Split bundles and load feature code on interaction or route transition.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1197937,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9457,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy stylesheet from administracion.gob.es",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from administracion.gob.es",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 254418,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from administracion.gob.es",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 159817,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.googletagmanager.com",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 145371,
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 34,
        "urgency": "medium",
        "providerCount": 1,
        "requestCount": 2,
        "transferBytes": 290047,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290047,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "medium",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "medium",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          }
        ]
      },
      "redundancy": {
        "score": 69,
        "urgency": "high",
        "transferBytes": 2188341,
        "estimatedRedundantBytes": 1742872,
        "redundancyRatio": 0.796435290478038,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 1197937,
            "displayValue": "Est savings of 1,170 KiB"
          },
          {
            "auditId": "unused-javascript",
            "title": "Reduce unused JavaScript",
            "savingsBytes": 544935,
            "displayValue": "Est savings of 532 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "high",
            "estimatedSavingsBytes": 1197937,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce unused javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 544935,
            "auditId": "unused-javascript",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Enable and verify text compression",
            "urgency": "medium",
            "estimatedSavingsBytes": 1313541,
            "auditId": "uses-text-compression",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 47,
        "urgency": "high",
        "totalTransferBytes": 2188341,
        "heavyRequestCount": 6,
        "heavyBytes": 1925259,
        "heavyRatio": 0.8797801622324857,
        "heavyRequests": [
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "transferSize": 1177193,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "transferSize": 254418,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "transferSize": 159817,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "transferSize": 145371,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-4YNNM3J1E0&cx=c&gtm=4e63p1",
            "transferSize": 144676,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/libs/jquery.mCustomScrollbar.css",
            "transferSize": 43784,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 1220977
          },
          {
            "resourceType": "script",
            "count": 3,
            "transferBytes": 544465
          },
          {
            "resourceType": "image",
            "count": 1,
            "transferBytes": 159817
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "administracion.gob.es",
            "count": 4,
            "transferBytes": 1635212
          },
          {
            "domain": "www.googletagmanager.com",
            "count": 2,
            "transferBytes": 290047
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Lazy-load offscreen images and media galleries",
            "urgency": "medium",
            "estimatedSavingsBytes": 91115,
            "strategy": "Load imagery only when it enters the viewport or when a user opens the relevant section.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Split JavaScript by route or interaction",
            "urgency": "high",
            "estimatedSavingsBytes": 544935,
            "strategy": "Move non-critical bundles behind route-level or event-driven imports so they are only fetched on demand.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy stylesheet asset from administracion.gob.es",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "strategy": "Split this stylesheet so component-specific CSS is delivered only when the component is rendered.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 254418,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 159817,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0,
          "displayValue": "12.1 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 12.1 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": 0.06,
          "displayValue": "11.0 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- Current value: 11.0 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": 0,
          "displayValue": "Est savings of 532 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- Current value: Est savings of 532 KiB\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 1,170 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 1,170 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 9,460 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 9,460 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": 0,
          "displayValue": "Est savings of 1,283 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- Current value: Est savings of 1,283 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 124 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 124 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 7 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- Current value: Est savings of 7 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 89 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- Current value: Est savings of 89 KiB\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://administracion.gob.es/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/empresas/inicio-gestion-cierre/registro-cambio-cierre/sector-farmaceutico",
      "status": "ok",
      "finalUrl": "https://administracion.gob.es/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/empresas/inicio-gestion-cierre/registro-cambio-cierre/sector-farmaceutico",
      "performanceScore": 0.56,
      "bestPracticesScore": 0.79,
      "transferBytes": 2218802,
      "co2Grams": 0.8499817764828,
      "greenWeb": {
        "page": {
          "hostname": "administracion.gob.es",
          "checked": true,
          "status": "not-green",
          "green": false,
          "hostedBy": null,
          "hostedByWebsite": null,
          "listedProvider": null,
          "partner": null,
          "modified": "2026-03-29T13:38:28.588564",
          "supportingDocuments": [],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/administracion.gob.es",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290047,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "not-green",
          "externalOriginCount": 1,
          "greenCount": 1,
          "notGreenCount": 1,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 70,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/buscador/buscadorsimple.htm|input|text|q|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "q",
            "formContext": "form|get|/buscador/buscadorsimple.htm",
            "hasLabel": false,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 70,
              "urgency": "high",
              "issues": [
                "Missing associated label",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add a programmatic label using <label>, aria-label, or aria-labelledby.",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "Missing associated label",
            "urgency": "high",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 35,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": false,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Registration, change of form and dissolution of a business: pharmaceutical sector - Registering, changing the legal form of or closing a business - Starting, running and closing a business - Business - Your rights and obligations in the EU - Tu espacio europeo - Punto de Acceso General",
          "lang": "en",
          "charset": "",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Information on procedures for registration, change of form and dissolution of pharmaceutical laboratories, manufacturers of active pharmaceutical ingredients, healthcare product facilities and businesses manufacturing and/or importing cosmetics, personal care products and biocides under the competence of the AEMPS",
          "robots": "all",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 38,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 54,
          "tabletSmallTapTargets": 89,
          "fixedWidthOffenders": 4,
          "oversizedMedia": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 399,
            "viewportHeight": 864,
            "contentWidth": 399,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 4,
            "smallTapTargets": 54,
            "oversizedMedia": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 829,
            "viewportHeight": 1193,
            "contentWidth": 829,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 89,
            "oversizedMedia": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 54 small targets on mobile and 89 on tablet."
          },
          {
            "title": "Refactor fixed-width components",
            "urgency": "medium",
            "detail": "4 element(s) exceeded viewport width in tested layouts; use responsive component constraints."
          }
        ]
      },
      "securityLight": {
        "score": 33,
        "urgency": "medium",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": false,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 2,
          "externalScriptsWithoutIntegrity": 2,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "connection": "Keep-Alive",
            "content-encoding": "gzip",
            "content-type": "text/html;charset=UTF-8",
            "date": "Mon, 30 Mar 2026 00:27:23 GMT",
            "keep-alive": "timeout=15, max=500",
            "referrer-policy": "origin-when-cross-origin,strict-origin-when-cross-origin",
            "server": "Microsoft-IIS/5.0",
            "set-cookie": "VISITOR=returning; Path=/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/empresas; HttpOnly; Secure; SameSite=None\nTS01a8e1d0=01d9c3d318bf0950b965bada48d495334398e7a4d81a950e85b01dc930419b68c9a1e8639e95ff7a154a24dc16c6430f061b90f0ea52fcc5b3e1b8ca06f6cbb2c8c1d7490cc60437fa57bb67082ccdad709be5a5ee; Path=/; HttpOnly; Secure; SameSite=None\nTS01e4c404=01d9c3d3183d0ab5e35f0a4d3b0e06f02e6973180380529b1b9ba56384d07a19b66567890ae44783a444bdd5d48d6a967bacc4b9ad4bff902aea9909935fb9326af3d6d004f98a4d48eaff3a52021502918d296d1fe81761193e34385adc30c5a064c0078b; path=/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/empresas; HttpOnly; Secure; SameSite=None",
            "strict-transport-security": "max-age=63072000; preload",
            "transfer-encoding": "chunked",
            "vary": "Accept-Encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1;mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add a Content-Security-Policy header",
            "urgency": "high",
            "detail": "Add an appropriate CSP to reduce script injection and resource loading risk."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "2 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 30,
        "urgency": "medium",
        "origin": "https://administracion.gob.es",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://administracion.gob.es/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/favicon.ico",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 2403496.2,
        "checks": {
          "hasEffectiveTextCompression": false
        },
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "estimatedSavingsBytes": 1313541,
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "estimatedSavingsBytes": 891965,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "estimatedSavingsBytes": 126680.2,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "estimatedSavingsBytes": 63759,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "estimatedSavingsBytes": 7551,
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings."
          }
        ],
        "recommendations": [
          {
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
          },
          {
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
          },
          {
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 7.37 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 4245017.2,
        "totalEstimatedBlockingMs": 8909,
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable text compression",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat.",
            "estimatedSavingsBytes": 1313541,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,283 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-text-compression"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 1194873,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,167 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 891965,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 871 KiB",
            "urgency": "high",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unused-javascript",
            "title": "Remove unused JavaScript",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code.",
            "estimatedSavingsBytes": 532367,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 520 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-javascript"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 8909,
            "displayValue": "Est savings of 8,910 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 126680.2,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 124 KiB",
            "urgency": "medium",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "offscreen-images",
            "title": "Lazy-load offscreen images",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed.",
            "estimatedSavingsBytes": 107569,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 105 KiB",
            "urgency": "medium",
            "sourceAuditId": "offscreen-images"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 63759,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 62 KiB",
            "urgency": "medium",
            "sourceAuditId": "unminified-javascript"
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss.",
            "estimatedSavingsBytes": 7551,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-optimized-images"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 6712,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-responsive-images"
          }
        ],
        "recommendations": [
          {
            "title": "Enable text compression",
            "urgency": "high",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat. Estimated byte savings: 1.25 MB."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "high",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 1.14 MB."
          },
          {
            "title": "Minify CSS",
            "urgency": "high",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 871.06 KB."
          },
          {
            "title": "Remove unused JavaScript",
            "urgency": "high",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code. Estimated byte savings: 519.89 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 8909 ms."
          },
          {
            "title": "Serve images in next-gen formats",
            "urgency": "medium",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 123.71 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 4,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 2,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "2 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1904795
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.82 MB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.82 MB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 32,
        "urgency": "high",
        "transferBytes": 2218802,
        "css": {
          "unusedBytes": 1194873,
          "ratio": 0.538521688731126,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 532367,
          "duplicatedBytes": 0,
          "ratio": 0.2399344330859626,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0.125,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "high",
            "estimatedSavingsBytes": 1194873,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          },
          {
            "area": "javascript",
            "title": "Remove unused JavaScript and feature bundles",
            "urgency": "high",
            "estimatedSavingsBytes": 532367,
            "strategy": "Drop unused packages and feature code, or move them behind route-level or interaction-triggered imports.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 35,
        "urgency": "high",
        "transferBytes": 2218802,
        "estimatedDeferrableBytes": 1834809,
        "renderBlockingMs": 8909,
        "breakdown": {
          "offscreenImageSavings": 107569,
          "unusedJavascriptSavings": 532367,
          "unusedCssSavings": 1194873
        },
        "candidates": [
          {
            "title": "Lazy-load offscreen images",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 107569,
            "strategy": "Load below-the-fold images only when they approach the viewport.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Defer non-critical JavaScript",
            "area": "javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 532367,
            "strategy": "Split bundles and load feature code on interaction or route transition.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1194873,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 8909,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy stylesheet from administracion.gob.es",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from administracion.gob.es",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 254411,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from administracion.gob.es",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 159817,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.googletagmanager.com",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 145371,
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 34,
        "urgency": "medium",
        "providerCount": 1,
        "requestCount": 2,
        "transferBytes": 290047,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290047,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "medium",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "medium",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          }
        ]
      },
      "redundancy": {
        "score": 75,
        "urgency": "high",
        "transferBytes": 2218802,
        "estimatedRedundantBytes": 1727240,
        "redundancyRatio": 0.7784561218170887,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 1194873,
            "displayValue": "Est savings of 1,167 KiB"
          },
          {
            "auditId": "unused-javascript",
            "title": "Reduce unused JavaScript",
            "savingsBytes": 532367,
            "displayValue": "Est savings of 520 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "high",
            "estimatedSavingsBytes": 1194873,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce unused javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 532367,
            "auditId": "unused-javascript",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Enable and verify text compression",
            "urgency": "medium",
            "estimatedSavingsBytes": 1313541,
            "auditId": "uses-text-compression",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce DOM complexity and redundant markup",
            "urgency": "medium",
            "estimatedSavingsBytes": 0,
            "auditId": "dom-size",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 47,
        "urgency": "high",
        "totalTransferBytes": 2218802,
        "heavyRequestCount": 6,
        "heavyBytes": 1925252,
        "heavyRatio": 0.8676988753390343,
        "heavyRequests": [
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "transferSize": 1177193,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "transferSize": 254411,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "transferSize": 159817,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "transferSize": 145371,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-4YNNM3J1E0&cx=c&gtm=4e63p1",
            "transferSize": 144676,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/libs/jquery.mCustomScrollbar.css",
            "transferSize": 43784,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 1220977
          },
          {
            "resourceType": "script",
            "count": 3,
            "transferBytes": 544458
          },
          {
            "resourceType": "image",
            "count": 1,
            "transferBytes": 159817
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "administracion.gob.es",
            "count": 4,
            "transferBytes": 1635205
          },
          {
            "domain": "www.googletagmanager.com",
            "count": 2,
            "transferBytes": 290047
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Lazy-load offscreen images and media galleries",
            "urgency": "medium",
            "estimatedSavingsBytes": 107569,
            "strategy": "Load imagery only when it enters the viewport or when a user opens the relevant section.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Split JavaScript by route or interaction",
            "urgency": "high",
            "estimatedSavingsBytes": 532367,
            "strategy": "Move non-critical bundles behind route-level or event-driven imports so they are only fetched on demand.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy stylesheet asset from administracion.gob.es",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "strategy": "Split this stylesheet so component-specific CSS is delivered only when the component is rendered.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 254411,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 159817,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0,
          "displayValue": "11.9 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 11.9 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": 0.06,
          "displayValue": "11.0 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- Current value: 11.0 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": 0,
          "displayValue": "Est savings of 520 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- Current value: Est savings of 520 KiB\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 1,167 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 1,167 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 8,910 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 8,910 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": 0,
          "displayValue": "Est savings of 1,283 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- Current value: Est savings of 1,283 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 124 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 124 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 7 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- Current value: Est savings of 7 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 105 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- Current value: Est savings of 105 KiB\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "dom-size",
          "title": "Avoid an excessive DOM size",
          "description": "A large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).",
          "score": 0.5,
          "displayValue": "958 elements",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Avoid an excessive DOM size\n\n- Lighthouse audit: dom-size\n- Current value: 958 elements\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nA large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://administracion.gob.es/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/empresas/contratacion-publica/participar-licitaciones/asistencia-informacion",
      "status": "ok",
      "finalUrl": "https://administracion.gob.es/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/empresas/contratacion-publica/participar-licitaciones/asistencia-informacion",
      "performanceScore": 0.56,
      "bestPracticesScore": 0.79,
      "transferBytes": 1918576,
      "co2Grams": 0.7349707800864,
      "greenWeb": {
        "page": {
          "hostname": "administracion.gob.es",
          "checked": true,
          "status": "not-green",
          "green": false,
          "hostedBy": null,
          "hostedByWebsite": null,
          "listedProvider": null,
          "partner": null,
          "modified": "2026-03-29T13:38:28.588564",
          "supportingDocuments": [],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/administracion.gob.es",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290042,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "not-green",
          "externalOriginCount": 1,
          "greenCount": 1,
          "notGreenCount": 1,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 70,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/buscador/buscadorsimple.htm|input|text|q|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "q",
            "formContext": "form|get|/buscador/buscadorsimple.htm",
            "hasLabel": false,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 70,
              "urgency": "high",
              "issues": [
                "Missing associated label",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add a programmatic label using <label>, aria-label, or aria-labelledby.",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "Missing associated label",
            "urgency": "high",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 25,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": true,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": false,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Asistencia e información - Contratación pública: Participación en licitaciones - Contratación pública - Empresas - Tus derechos y obligaciones en la UE - Tu espacio europeo - Punto de Acceso General",
          "lang": "eu",
          "charset": "",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Conoce la guía sobre contratación pública y competencia y la planificación de la contratación pública.",
          "robots": "all",
          "canonical": "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/empresas/contratacion-publica/participar-licitaciones/asistencia-informacion",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 32,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 44,
          "tabletSmallTapTargets": 70,
          "fixedWidthOffenders": 1,
          "oversizedMedia": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 399,
            "viewportHeight": 864,
            "contentWidth": 399,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 1,
            "smallTapTargets": 44,
            "oversizedMedia": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 829,
            "viewportHeight": 1193,
            "contentWidth": 829,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 70,
            "oversizedMedia": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 44 small targets on mobile and 70 on tablet."
          },
          {
            "title": "Refactor fixed-width components",
            "urgency": "medium",
            "detail": "1 element(s) exceeded viewport width in tested layouts; use responsive component constraints."
          }
        ]
      },
      "securityLight": {
        "score": 31,
        "urgency": "medium",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": false,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "connection": "Keep-Alive",
            "content-encoding": "gzip",
            "content-type": "text/html;charset=UTF-8",
            "date": "Mon, 30 Mar 2026 00:27:44 GMT",
            "keep-alive": "timeout=15, max=500",
            "referrer-policy": "origin-when-cross-origin,strict-origin-when-cross-origin",
            "server": "Microsoft-IIS/5.0",
            "set-cookie": "VISITOR=returning; Path=/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/empresas; HttpOnly; Secure; SameSite=None\nTS01a8e1d0=01d9c3d318bf0950b965bada48d495334398e7a4d81a950e85b01dc930419b68c9a1e8639e95ff7a154a24dc16c6430f061b90f0ea52fcc5b3e1b8ca06f6cbb2c8c1d7490cc60437fa57bb67082ccdad709be5a5ee; Path=/; HttpOnly; Secure; SameSite=None\nTS01298ba9=01d9c3d3183d0ab5e35f0a4d3b0e06f02e6973180380529b1b9ba56384d07a19b66567890ae44783a444bdd5d48d6a967bacc4b9ad4bff902aea9909935fb9326af3d6d004f98a4d48eaff3a52021502918d296d1fe81761193e34385adc30c5a064c0078b; path=/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/empresas; HttpOnly; Secure; SameSite=None",
            "strict-transport-security": "max-age=63072000; preload",
            "transfer-encoding": "chunked",
            "vary": "Accept-Encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1;mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add a Content-Security-Policy header",
            "urgency": "high",
            "detail": "Add an appropriate CSP to reduce script injection and resource loading risk."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 30,
        "urgency": "medium",
        "origin": "https://administracion.gob.es",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://administracion.gob.es/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/favicon.ico",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 2180351.2,
        "checks": {
          "hasEffectiveTextCompression": false
        },
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "estimatedSavingsBytes": 1090396,
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "estimatedSavingsBytes": 891965,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "estimatedSavingsBytes": 126680.2,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "estimatedSavingsBytes": 63759,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "estimatedSavingsBytes": 7551,
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings."
          }
        ],
        "recommendations": [
          {
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.04 MB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
          },
          {
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
          },
          {
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 7.37 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 4031853.2,
        "totalEstimatedBlockingMs": 7701,
        "opportunities": [
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 1196219,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,168 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "uses-text-compression",
            "title": "Enable text compression",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat.",
            "estimatedSavingsBytes": 1090396,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,065 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-text-compression"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 891965,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 871 KiB",
            "urgency": "high",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unused-javascript",
            "title": "Remove unused JavaScript",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code.",
            "estimatedSavingsBytes": 547287,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 534 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-javascript"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 7701,
            "displayValue": "Est savings of 7,700 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 126680.2,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 124 KiB",
            "urgency": "medium",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "offscreen-images",
            "title": "Lazy-load offscreen images",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed.",
            "estimatedSavingsBytes": 101284,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 99 KiB",
            "urgency": "medium",
            "sourceAuditId": "offscreen-images"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 63759,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 62 KiB",
            "urgency": "medium",
            "sourceAuditId": "unminified-javascript"
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss.",
            "estimatedSavingsBytes": 7551,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-optimized-images"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 6712,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-responsive-images"
          }
        ],
        "recommendations": [
          {
            "title": "Remove unused CSS",
            "urgency": "high",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 1.14 MB."
          },
          {
            "title": "Enable text compression",
            "urgency": "high",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat. Estimated byte savings: 1.04 MB."
          },
          {
            "title": "Minify CSS",
            "urgency": "high",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 871.06 KB."
          },
          {
            "title": "Remove unused JavaScript",
            "urgency": "high",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code. Estimated byte savings: 534.46 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 7701 ms."
          },
          {
            "title": "Serve images in next-gen formats",
            "urgency": "medium",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 123.71 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1610109
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.54 MB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.54 MB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 35,
        "urgency": "high",
        "transferBytes": 1918576,
        "css": {
          "unusedBytes": 1196219,
          "ratio": 0.6234931532553311,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 547287,
          "duplicatedBytes": 0,
          "ratio": 0.28525687801786326,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "high",
            "estimatedSavingsBytes": 1196219,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          },
          {
            "area": "javascript",
            "title": "Remove unused JavaScript and feature bundles",
            "urgency": "high",
            "estimatedSavingsBytes": 547287,
            "strategy": "Drop unused packages and feature code, or move them behind route-level or interaction-triggered imports.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 38,
        "urgency": "high",
        "transferBytes": 1918576,
        "estimatedDeferrableBytes": 1844790,
        "renderBlockingMs": 7701,
        "breakdown": {
          "offscreenImageSavings": 101284,
          "unusedJavascriptSavings": 547287,
          "unusedCssSavings": 1196219
        },
        "candidates": [
          {
            "title": "Lazy-load offscreen images",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 101284,
            "strategy": "Load below-the-fold images only when they approach the viewport.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Defer non-critical JavaScript",
            "area": "javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 547287,
            "strategy": "Split bundles and load feature code on interaction or route transition.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1196219,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 7701,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy stylesheet from administracion.gob.es",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from administracion.gob.es",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 159817,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.googletagmanager.com",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 145366,
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 34,
        "urgency": "medium",
        "providerCount": 1,
        "requestCount": 2,
        "transferBytes": 290042,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290042,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "medium",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "medium",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          }
        ]
      },
      "redundancy": {
        "score": 72,
        "urgency": "high",
        "transferBytes": 1918576,
        "estimatedRedundantBytes": 1743506,
        "redundancyRatio": 0.9087500312731943,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 1196219,
            "displayValue": "Est savings of 1,168 KiB"
          },
          {
            "auditId": "unused-javascript",
            "title": "Reduce unused JavaScript",
            "savingsBytes": 547287,
            "displayValue": "Est savings of 534 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "high",
            "estimatedSavingsBytes": 1196219,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce unused javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 547287,
            "auditId": "unused-javascript",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Enable and verify text compression",
            "urgency": "medium",
            "estimatedSavingsBytes": 1090396,
            "auditId": "uses-text-compression",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 47,
        "urgency": "high",
        "totalTransferBytes": 1918576,
        "heavyRequestCount": 5,
        "heavyBytes": 1670836,
        "heavyRatio": 0.8708729807940889,
        "heavyRequests": [
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "transferSize": 1177193,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "transferSize": 159817,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "transferSize": 145366,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-4YNNM3J1E0&cx=c&gtm=4e63p1",
            "transferSize": 144676,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/libs/jquery.mCustomScrollbar.css",
            "transferSize": 43784,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 1220977
          },
          {
            "resourceType": "script",
            "count": 2,
            "transferBytes": 290042
          },
          {
            "resourceType": "image",
            "count": 1,
            "transferBytes": 159817
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "administracion.gob.es",
            "count": 3,
            "transferBytes": 1380794
          },
          {
            "domain": "www.googletagmanager.com",
            "count": 2,
            "transferBytes": 290042
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Lazy-load offscreen images and media galleries",
            "urgency": "medium",
            "estimatedSavingsBytes": 101284,
            "strategy": "Load imagery only when it enters the viewport or when a user opens the relevant section.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Split JavaScript by route or interaction",
            "urgency": "high",
            "estimatedSavingsBytes": 547287,
            "strategy": "Move non-critical bundles behind route-level or event-driven imports so they are only fetched on demand.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy stylesheet asset from administracion.gob.es",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "strategy": "Split this stylesheet so component-specific CSS is delivered only when the component is rendered.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 159817,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from www.googletagmanager.com",
            "urgency": "medium",
            "estimatedSavingsBytes": 145366,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0,
          "displayValue": "9.6 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 9.6 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": 0.12,
          "displayValue": "9.3 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- Current value: 9.3 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": 0,
          "displayValue": "Est savings of 534 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- Current value: Est savings of 534 KiB\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 1,168 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 1,168 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 7,700 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 7,700 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": 0,
          "displayValue": "Est savings of 1,065 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- Current value: Est savings of 1,065 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "server-response-time",
          "title": "Reduce initial server response time",
          "description": "Keep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).",
          "score": 0,
          "displayValue": "Root document took 670 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "4",
            "categoryName": "Hosting, Infrastructure, and Systems",
            "id": "11",
            "title": "Ensure infrastructure fits project requirements",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements",
            "subheading": "Maintain the infrastructure you require rather than over-provisioning. Autoscale to meet demand and preserve hardware resources."
          },
          "issueTemplate": "## Improve Reduce initial server response time\n\n- Lighthouse audit: server-response-time\n- Current value: Root document took 670 ms\n- WSG guideline: 11 Ensure infrastructure fits project requirements\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#ensure-infrastructure-fits-project-requirements\n\n### Why this matters\nKeep the server response time for the main document short because all other requests depend on it. [Learn more about the Time to First Byte metric](https://developer.chrome.com/docs/lighthouse/performance/time-to-first-byte/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 124 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 124 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 7 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- Current value: Est savings of 7 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 99 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- Current value: Est savings of 99 KiB\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://administracion.gob.es/pag_Home/gl/Tu-espacio-europeo/derechos-obligaciones/empresas/productos/defectuosos-seguridad",
      "status": "ok",
      "finalUrl": "https://administracion.gob.es/pag_Home/gl/Tu-espacio-europeo/derechos-obligaciones/empresas/productos/defectuosos-seguridad",
      "performanceScore": 0.56,
      "bestPracticesScore": 0.79,
      "transferBytes": 2229447,
      "co2Grams": 0.8540596779858001,
      "greenWeb": {
        "page": {
          "hostname": "administracion.gob.es",
          "checked": true,
          "status": "not-green",
          "green": false,
          "hostedBy": null,
          "hostedByWebsite": null,
          "listedProvider": null,
          "partner": null,
          "modified": "2026-03-29T13:38:28.588564",
          "supportingDocuments": [],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/administracion.gob.es",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290047,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "not-green",
          "externalOriginCount": 1,
          "greenCount": 1,
          "notGreenCount": 1,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 70,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/buscador/buscadorsimple.htm|input|text|q|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "q",
            "formContext": "form|get|/buscador/buscadorsimple.htm",
            "hasLabel": false,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 70,
              "urgency": "high",
              "issues": [
                "Missing associated label",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add a programmatic label using <label>, aria-label, or aria-labelledby.",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "Missing associated label",
            "urgency": "high",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 25,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": true,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": false,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Seguridad de los productos - Productos - Empresas - Tus derechos y obligaciones en la UE - Tu espacio europeo - Punto de Acceso General",
          "lang": "gl",
          "charset": "",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Conoce la seguridad de los productos, la responsabilidad postventa y los productos defectuosos: Vías de reparación de los perjudicados.",
          "robots": "all",
          "canonical": "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/empresas/productos/defectuosos-seguridad",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 41,
          "tabletSmallTapTargets": 72,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 399,
            "viewportHeight": 864,
            "contentWidth": 399,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 41,
            "oversizedMedia": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 829,
            "viewportHeight": 1193,
            "contentWidth": 829,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 72,
            "oversizedMedia": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 41 small targets on mobile and 72 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 31,
        "urgency": "medium",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": false,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "connection": "Keep-Alive",
            "content-encoding": "gzip",
            "content-type": "text/html;charset=UTF-8",
            "date": "Mon, 30 Mar 2026 00:28:06 GMT",
            "keep-alive": "timeout=15, max=500",
            "referrer-policy": "origin-when-cross-origin,strict-origin-when-cross-origin",
            "server": "Microsoft-IIS/5.0",
            "set-cookie": "VISITOR=returning; Path=/pag_Home/gl/Tu-espacio-europeo/derechos-obligaciones/empresas; HttpOnly; Secure; SameSite=None\nTS01a8e1d0=01d9c3d318bf0950b965bada48d495334398e7a4d81a950e85b01dc930419b68c9a1e8639e95ff7a154a24dc16c6430f061b90f0ea52fcc5b3e1b8ca06f6cbb2c8c1d7490cc60437fa57bb67082ccdad709be5a5ee; Path=/; HttpOnly; Secure; SameSite=None\nTS013efc47=01d9c3d318e30d71c8f2baaadc7a422b508ec8f1b51a950e85b01dc930419b68c9a1e8639e95ff7a154a24dc16c6430f061b90f0ea52fcc5b3e1b8ca06f6cbb2c8c1d7490c1d9f388aaa462aa361eb925e482f499148a2e0fb86903edf66edba02ee20c5cf; path=/pag_Home/gl/Tu-espacio-europeo/derechos-obligaciones/empresas; HttpOnly; Secure; SameSite=None",
            "strict-transport-security": "max-age=63072000; preload",
            "transfer-encoding": "chunked",
            "vary": "Accept-Encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1;mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add a Content-Security-Policy header",
            "urgency": "high",
            "detail": "Add an appropriate CSP to reduce script injection and resource loading risk."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 30,
        "urgency": "medium",
        "origin": "https://administracion.gob.es",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://administracion.gob.es/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/favicon.ico",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 2403496.2,
        "checks": {
          "hasEffectiveTextCompression": false
        },
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "estimatedSavingsBytes": 1313541,
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "estimatedSavingsBytes": 891965,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "estimatedSavingsBytes": 126680.2,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "estimatedSavingsBytes": 63759,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "estimatedSavingsBytes": 7551,
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings."
          }
        ],
        "recommendations": [
          {
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
          },
          {
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
          },
          {
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 7.37 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 4269053.2,
        "totalEstimatedBlockingMs": 9126,
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable text compression",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat.",
            "estimatedSavingsBytes": 1313541,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,283 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-text-compression"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 1195549,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,168 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 891965,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 871 KiB",
            "urgency": "high",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unused-javascript",
            "title": "Remove unused JavaScript",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code.",
            "estimatedSavingsBytes": 546357,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 534 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-javascript"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9126,
            "displayValue": "Est savings of 9,130 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 126680.2,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 124 KiB",
            "urgency": "medium",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "offscreen-images",
            "title": "Lazy-load offscreen images",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed.",
            "estimatedSavingsBytes": 116939,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 114 KiB",
            "urgency": "medium",
            "sourceAuditId": "offscreen-images"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 63759,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 62 KiB",
            "urgency": "medium",
            "sourceAuditId": "unminified-javascript"
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss.",
            "estimatedSavingsBytes": 7551,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-optimized-images"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 6712,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-responsive-images"
          }
        ],
        "recommendations": [
          {
            "title": "Enable text compression",
            "urgency": "high",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat. Estimated byte savings: 1.25 MB."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "high",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 1.14 MB."
          },
          {
            "title": "Minify CSS",
            "urgency": "high",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 871.06 KB."
          },
          {
            "title": "Remove unused JavaScript",
            "urgency": "high",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code. Estimated byte savings: 533.55 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 9126 ms."
          },
          {
            "title": "Serve images in next-gen formats",
            "urgency": "medium",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 123.71 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1917325
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.83 MB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.83 MB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 30,
        "urgency": "high",
        "transferBytes": 2229447,
        "css": {
          "unusedBytes": 1195549,
          "ratio": 0.5362536090788433,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 546357,
          "duplicatedBytes": 0,
          "ratio": 0.24506391046748363,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "high",
            "estimatedSavingsBytes": 1195549,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          },
          {
            "area": "javascript",
            "title": "Remove unused JavaScript and feature bundles",
            "urgency": "high",
            "estimatedSavingsBytes": 546357,
            "strategy": "Drop unused packages and feature code, or move them behind route-level or interaction-triggered imports.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 35,
        "urgency": "high",
        "transferBytes": 2229447,
        "estimatedDeferrableBytes": 1858845,
        "renderBlockingMs": 9126,
        "breakdown": {
          "offscreenImageSavings": 116939,
          "unusedJavascriptSavings": 546357,
          "unusedCssSavings": 1195549
        },
        "candidates": [
          {
            "title": "Lazy-load offscreen images",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 116939,
            "strategy": "Load below-the-fold images only when they approach the viewport.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Defer non-critical JavaScript",
            "area": "javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 546357,
            "strategy": "Split bundles and load feature code on interaction or route transition.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1195549,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9126,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy stylesheet from administracion.gob.es",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from administracion.gob.es",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 254418,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from administracion.gob.es",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.googletagmanager.com",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 145371,
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 34,
        "urgency": "medium",
        "providerCount": 1,
        "requestCount": 2,
        "transferBytes": 290047,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290047,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "medium",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "medium",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          }
        ]
      },
      "redundancy": {
        "score": 68,
        "urgency": "high",
        "transferBytes": 2229447,
        "estimatedRedundantBytes": 1741906,
        "redundancyRatio": 0.781317519546327,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 1195549,
            "displayValue": "Est savings of 1,168 KiB"
          },
          {
            "auditId": "unused-javascript",
            "title": "Reduce unused JavaScript",
            "savingsBytes": 546357,
            "displayValue": "Est savings of 534 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "high",
            "estimatedSavingsBytes": 1195549,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce unused javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 546357,
            "auditId": "unused-javascript",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Enable and verify text compression",
            "urgency": "medium",
            "estimatedSavingsBytes": 1313541,
            "auditId": "uses-text-compression",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 47,
        "urgency": "high",
        "totalTransferBytes": 2229447,
        "heavyRequestCount": 6,
        "heavyBytes": 1925265,
        "heavyRatio": 0.8635616814393884,
        "heavyRequests": [
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "transferSize": 1177193,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "transferSize": 254418,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "transferSize": 159823,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "transferSize": 145371,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-4YNNM3J1E0&cx=c&gtm=4e63p1",
            "transferSize": 144676,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/libs/jquery.mCustomScrollbar.css",
            "transferSize": 43784,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 1220977
          },
          {
            "resourceType": "script",
            "count": 3,
            "transferBytes": 544465
          },
          {
            "resourceType": "image",
            "count": 1,
            "transferBytes": 159823
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "administracion.gob.es",
            "count": 4,
            "transferBytes": 1635218
          },
          {
            "domain": "www.googletagmanager.com",
            "count": 2,
            "transferBytes": 290047
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Lazy-load offscreen images and media galleries",
            "urgency": "medium",
            "estimatedSavingsBytes": 116939,
            "strategy": "Load imagery only when it enters the viewport or when a user opens the relevant section.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Split JavaScript by route or interaction",
            "urgency": "high",
            "estimatedSavingsBytes": 546357,
            "strategy": "Move non-critical bundles behind route-level or event-driven imports so they are only fetched on demand.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy stylesheet asset from administracion.gob.es",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "strategy": "Split this stylesheet so component-specific CSS is delivered only when the component is rendered.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 254418,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0,
          "displayValue": "11.0 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 11.0 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": 0.06,
          "displayValue": "11.0 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- Current value: 11.0 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": 0,
          "displayValue": "Est savings of 534 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- Current value: Est savings of 534 KiB\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 1,168 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 1,168 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 9,130 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 9,130 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": 0,
          "displayValue": "Est savings of 1,283 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- Current value: Est savings of 1,283 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 124 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 124 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 7 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- Current value: Est savings of 7 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 114 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- Current value: Est savings of 114 KiB\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://administracion.gob.es/pag_Home/gl/index.html",
      "status": "ok",
      "finalUrl": "https://administracion.gob.es/pag_Home/gl/index.html",
      "performanceScore": 0.55,
      "bestPracticesScore": 0.79,
      "transferBytes": 3252744,
      "co2Grams": 1.2460657253616,
      "greenWeb": {
        "page": {
          "hostname": "administracion.gob.es",
          "checked": true,
          "status": "not-green",
          "green": false,
          "hostedBy": null,
          "hostedByWebsite": null,
          "listedProvider": null,
          "partner": null,
          "modified": "2026-03-29T13:38:28.588564",
          "supportingDocuments": [],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/administracion.gob.es",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 145371,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "not-green",
          "externalOriginCount": 1,
          "greenCount": 1,
          "notGreenCount": 1,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 70,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/buscador/buscadorsimple.htm|input|text|q|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "q",
            "formContext": "form|get|/buscador/buscadorsimple.htm",
            "hasLabel": false,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 70,
              "urgency": "high",
              "issues": [
                "Missing associated label",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add a programmatic label using <label>, aria-label, or aria-labelledby.",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "Missing associated label",
            "urgency": "high",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 25,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": true,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": false,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Administracion.gob.es - Punto de Acceso General",
          "lang": "gl",
          "charset": "",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "O Punto de Acceso Xeral (administracion.gob.es) é un portal web que ofrece un punto único de acceso para o cidadán a información de interese sobre as Administracións Públicas e sobre os seus trámites administrativos.",
          "robots": "all",
          "canonical": "https://administracion.gob.es/pag_Home/index.html",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 38,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 72,
          "tabletSmallTapTargets": 120,
          "fixedWidthOffenders": 4,
          "oversizedMedia": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 2,
            "smallTapTargets": 72,
            "oversizedMedia": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 2,
            "smallTapTargets": 120,
            "oversizedMedia": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 72 small targets on mobile and 120 on tablet."
          },
          {
            "title": "Refactor fixed-width components",
            "urgency": "medium",
            "detail": "4 element(s) exceeded viewport width in tested layouts; use responsive component constraints."
          }
        ]
      },
      "securityLight": {
        "score": 31,
        "urgency": "medium",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": false,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "connection": "Keep-Alive",
            "content-encoding": "gzip",
            "content-type": "text/html;charset=UTF-8",
            "date": "Mon, 30 Mar 2026 00:28:32 GMT",
            "keep-alive": "timeout=15, max=500",
            "referrer-policy": "origin-when-cross-origin,strict-origin-when-cross-origin",
            "server": "Microsoft-IIS/5.0",
            "set-cookie": "VISITOR=returning; Path=/pag_Home/gl/index.html; HttpOnly; Secure; SameSite=None\nTS01a8e1d0=01d9c3d318bf0950b965bada48d495334398e7a4d81a950e85b01dc930419b68c9a1e8639e95ff7a154a24dc16c6430f061b90f0ea52fcc5b3e1b8ca06f6cbb2c8c1d7490cc60437fa57bb67082ccdad709be5a5ee; Path=/; HttpOnly; Secure; SameSite=None\nTS01d7fad5=01d9c3d318e30d71c8f2baaadc7a422b508ec8f1b51a950e85b01dc930419b68c9a1e8639e95ff7a154a24dc16c6430f061b90f0ea52fcc5b3e1b8ca06f6cbb2c8c1d7490c1d9f388aaa462aa361eb925e482f499148a2e0fb86903edf66edba02ee20c5cf; path=/pag_Home/gl/index.html; HttpOnly; Secure; SameSite=None",
            "strict-transport-security": "max-age=63072000; preload",
            "transfer-encoding": "chunked",
            "vary": "Accept-Encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1;mode=block",
            "traceresponse": "00-9072bde40af6e8f96582ce4f8497b504-180069dbc2e96307-01",
            "x-dt-tracestate": "acd5d8fe-344161ca@dt"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add a Content-Security-Policy header",
            "urgency": "high",
            "detail": "Add an appropriate CSP to reduce script injection and resource loading risk."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 30,
        "urgency": "medium",
        "origin": "https://administracion.gob.es",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://administracion.gob.es/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/favicon.ico",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 92,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 3004271.45,
        "checks": {
          "hasEffectiveTextCompression": false
        },
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "estimatedSavingsBytes": 1313541,
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "estimatedSavingsBytes": 891965,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "high",
            "estimatedSavingsBytes": 704527.4500000001,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "estimatedSavingsBytes": 63759,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "estimatedSavingsBytes": 30479,
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings."
          }
        ],
        "recommendations": [
          {
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
          },
          {
            "title": "Use modern image compression formats",
            "urgency": "high",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 688.02 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
          },
          {
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 29.76 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 5350987.45,
        "totalEstimatedBlockingMs": 8879,
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable text compression",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat.",
            "estimatedSavingsBytes": 1313541,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,283 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-text-compression"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 1189756,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,162 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 891965,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 871 KiB",
            "urgency": "high",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 704527.4500000001,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 688 KiB",
            "urgency": "high",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 488212,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 477 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-responsive-images"
          },
          {
            "id": "unused-javascript",
            "title": "Remove unused JavaScript",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code.",
            "estimatedSavingsBytes": 421365,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 411 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-javascript"
          },
          {
            "id": "offscreen-images",
            "title": "Lazy-load offscreen images",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed.",
            "estimatedSavingsBytes": 247383,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 242 KiB",
            "urgency": "high",
            "sourceAuditId": "offscreen-images"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 8879,
            "displayValue": "Est savings of 8,880 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 63759,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 62 KiB",
            "urgency": "medium",
            "sourceAuditId": "unminified-javascript"
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss.",
            "estimatedSavingsBytes": 30479,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 30 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-optimized-images"
          }
        ],
        "recommendations": [
          {
            "title": "Enable text compression",
            "urgency": "high",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat. Estimated byte savings: 1.25 MB."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "high",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 1.13 MB."
          },
          {
            "title": "Minify CSS",
            "urgency": "high",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 871.06 KB."
          },
          {
            "title": "Serve images in next-gen formats",
            "urgency": "high",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 688.02 KB."
          },
          {
            "title": "Right-size images for viewport",
            "urgency": "high",
            "detail": "Avoid sending larger images than the rendered size needs. Estimated byte savings: 476.77 KB."
          },
          {
            "title": "Remove unused JavaScript",
            "urgency": "high",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code. Estimated byte savings: 411.49 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 3089084
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 2.95 MB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 2.95 MB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 21,
        "urgency": "high",
        "transferBytes": 3252744,
        "css": {
          "unusedBytes": 1189756,
          "ratio": 0.3657699468510279,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 421365,
          "duplicatedBytes": 0,
          "ratio": 0.12954139643328832,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0.125,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "high",
            "estimatedSavingsBytes": 1189756,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          },
          {
            "area": "javascript",
            "title": "Remove unused JavaScript and feature bundles",
            "urgency": "high",
            "estimatedSavingsBytes": 421365,
            "strategy": "Drop unused packages and feature code, or move them behind route-level or interaction-triggered imports.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 29,
        "urgency": "high",
        "transferBytes": 3252744,
        "estimatedDeferrableBytes": 1858504,
        "renderBlockingMs": 8879,
        "breakdown": {
          "offscreenImageSavings": 247383,
          "unusedJavascriptSavings": 421365,
          "unusedCssSavings": 1189756
        },
        "candidates": [
          {
            "title": "Lazy-load offscreen images",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 247383,
            "strategy": "Load below-the-fold images only when they approach the viewport.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Defer non-critical JavaScript",
            "area": "javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 421365,
            "strategy": "Split bundles and load feature code on interaction or route transition.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1189756,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 8879,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy stylesheet from administracion.gob.es",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from administracion.gob.es",
            "area": "image",
            "urgency": "high",
            "estimatedSavingsBytes": 498764,
            "url": "https://administracion.gob.es/dam/jcr:e31ce16e-02c8-487e-b5dc-8163515b1293/oficina-atencion.jpg",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from administracion.gob.es",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 254411,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 17,
        "urgency": "low",
        "providerCount": 1,
        "requestCount": 1,
        "transferBytes": 145371,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 145371,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "low",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          }
        ]
      },
      "redundancy": {
        "score": 60,
        "urgency": "high",
        "transferBytes": 3252744,
        "estimatedRedundantBytes": 1611121,
        "redundancyRatio": 0.49531134328431625,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 1189756,
            "displayValue": "Est savings of 1,162 KiB"
          },
          {
            "auditId": "unused-javascript",
            "title": "Reduce unused JavaScript",
            "savingsBytes": 421365,
            "displayValue": "Est savings of 411 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "high",
            "estimatedSavingsBytes": 1189756,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce unused javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 421365,
            "auditId": "unused-javascript",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Enable and verify text compression",
            "urgency": "medium",
            "estimatedSavingsBytes": 1313541,
            "auditId": "uses-text-compression",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce DOM complexity and redundant markup",
            "urgency": "medium",
            "estimatedSavingsBytes": 0,
            "auditId": "dom-size",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 40,
        "urgency": "high",
        "totalTransferBytes": 3252744,
        "heavyRequestCount": 7,
        "heavyBytes": 2387378,
        "heavyRatio": 0.7339581596338353,
        "heavyRequests": [
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "transferSize": 1177193,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/dam/jcr:e31ce16e-02c8-487e-b5dc-8163515b1293/oficina-atencion.jpg",
            "transferSize": 498764,
            "resourceType": "image",
            "mimeType": "image/jpeg",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "transferSize": 254411,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "transferSize": 159817,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "transferSize": 145371,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://administracion.gob.es/dam/jcr:84743164-0af1-4ff3-9ba5-6b9d20d0a892/guias-tematicas.png",
            "transferSize": 108038,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/libs/jquery.mCustomScrollbar.css",
            "transferSize": 43784,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 1220977
          },
          {
            "resourceType": "image",
            "count": 3,
            "transferBytes": 766619
          },
          {
            "resourceType": "script",
            "count": 2,
            "transferBytes": 399782
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "administracion.gob.es",
            "count": 6,
            "transferBytes": 2242007
          },
          {
            "domain": "www.googletagmanager.com",
            "count": 1,
            "transferBytes": 145371
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Lazy-load offscreen images and media galleries",
            "urgency": "high",
            "estimatedSavingsBytes": 247383,
            "strategy": "Load imagery only when it enters the viewport or when a user opens the relevant section.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Split JavaScript by route or interaction",
            "urgency": "high",
            "estimatedSavingsBytes": 421365,
            "strategy": "Move non-critical bundles behind route-level or event-driven imports so they are only fetched on demand.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy stylesheet asset from administracion.gob.es",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "strategy": "Split this stylesheet so component-specific CSS is delivered only when the component is rendered.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from administracion.gob.es",
            "urgency": "high",
            "estimatedSavingsBytes": 498764,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://administracion.gob.es/dam/jcr:e31ce16e-02c8-487e-b5dc-8163515b1293/oficina-atencion.jpg",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 254411,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0,
          "displayValue": "17.2 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 17.2 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": 0.06,
          "displayValue": "10.8 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- Current value: 10.8 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": 0,
          "displayValue": "Est savings of 411 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- Current value: Est savings of 411 KiB\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 1,162 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 1,162 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0,
          "displayValue": "Est savings of 688 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 688 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": 0,
          "displayValue": "Est savings of 242 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- Current value: Est savings of 242 KiB\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 8,880 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 8,880 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": 0,
          "displayValue": "Est savings of 1,283 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- Current value: Est savings of 1,283 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 30 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- Current value: Est savings of 30 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "total-byte-weight",
          "title": "Avoid enormous network payloads",
          "description": "Large network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).",
          "score": 0.5,
          "displayValue": "Total size was 3,177 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "5",
            "categoryName": "Business Strategy And Product Management",
            "id": "25",
            "title": "Define performance and environmental budgets",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets",
            "subheading": "Set budgets, taking people, planet, and performance into account alongside baselines, targets, evidence, and resources to help meet KPIs."
          },
          "issueTemplate": "## Improve Avoid enormous network payloads\n\n- Lighthouse audit: total-byte-weight\n- Current value: Total size was 3,177 KiB\n- WSG guideline: 25 Define performance and environmental budgets\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets\n\n### Why this matters\nLarge network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "dom-size",
          "title": "Avoid an excessive DOM size",
          "description": "A large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).",
          "score": 0.5,
          "displayValue": "1,027 elements",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Avoid an excessive DOM size\n\n- Lighthouse audit: dom-size\n- Current value: 1,027 elements\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nA large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://administracion.gob.es/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/trabajo-jubilacion/incorporacion",
      "status": "ok",
      "finalUrl": "https://administracion.gob.es/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/trabajo-jubilacion/incorporacion",
      "performanceScore": 0.56,
      "bestPracticesScore": 0.79,
      "transferBytes": 2254587,
      "co2Grams": 0.8636903443818001,
      "greenWeb": {
        "page": {
          "hostname": "administracion.gob.es",
          "checked": true,
          "status": "not-green",
          "green": false,
          "hostedBy": null,
          "hostedByWebsite": null,
          "listedProvider": null,
          "partner": null,
          "modified": "2026-03-29T13:38:28.588564",
          "supportingDocuments": [],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/administracion.gob.es",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290047,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "not-green",
          "externalOriginCount": 1,
          "greenCount": 1,
          "notGreenCount": 1,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 70,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/buscador/buscadorsimple.htm|input|text|q|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "q",
            "formContext": "form|get|/buscador/buscadorsimple.htm",
            "hasLabel": false,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 70,
              "urgency": "high",
              "issues": [
                "Missing associated label",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add a programmatic label using <label>, aria-label, or aria-labelledby.",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "Missing associated label",
            "urgency": "high",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 25,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": true,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": false,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Incorporación a un puesto de trabajo - Trabajo y jubilación - Ciudadanos - Tus derechos y obligaciones en la UE - Tu espacio europeo - Punto de Acceso General",
          "lang": "eu",
          "charset": "",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Conoce la información a tener en cuenta para la incorporación a un puesto de trabajo en otro Estado miembro.",
          "robots": "all",
          "canonical": "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/trabajo-jubilacion/incorporacion",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 32,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 51,
          "tabletSmallTapTargets": 77,
          "fixedWidthOffenders": 1,
          "oversizedMedia": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 399,
            "viewportHeight": 864,
            "contentWidth": 399,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 1,
            "smallTapTargets": 51,
            "oversizedMedia": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 829,
            "viewportHeight": 1193,
            "contentWidth": 829,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 77,
            "oversizedMedia": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 51 small targets on mobile and 77 on tablet."
          },
          {
            "title": "Refactor fixed-width components",
            "urgency": "medium",
            "detail": "1 element(s) exceeded viewport width in tested layouts; use responsive component constraints."
          }
        ]
      },
      "securityLight": {
        "score": 33,
        "urgency": "medium",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": false,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 2,
          "externalScriptsWithoutIntegrity": 2,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "connection": "Keep-Alive",
            "content-encoding": "gzip",
            "content-type": "text/html;charset=UTF-8",
            "date": "Mon, 30 Mar 2026 00:28:54 GMT",
            "keep-alive": "timeout=15, max=500",
            "referrer-policy": "origin-when-cross-origin,strict-origin-when-cross-origin",
            "server": "Microsoft-IIS/5.0",
            "set-cookie": "VISITOR=returning; Path=/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/ciudadanos; HttpOnly; Secure; SameSite=None\nTS01a8e1d0=01d9c3d318bf0950b965bada48d495334398e7a4d81a950e85b01dc930419b68c9a1e8639e95ff7a154a24dc16c6430f061b90f0ea52fcc5b3e1b8ca06f6cbb2c8c1d7490cc60437fa57bb67082ccdad709be5a5ee; Path=/; HttpOnly; Secure; SameSite=None\nTS011d349b=01d9c3d3183d0ab5e35f0a4d3b0e06f02e6973180380529b1b9ba56384d07a19b66567890ae44783a444bdd5d48d6a967bacc4b9ad4bff902aea9909935fb9326af3d6d004f98a4d48eaff3a52021502918d296d1fe81761193e34385adc30c5a064c0078b; path=/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/ciudadanos; HttpOnly; Secure; SameSite=None",
            "strict-transport-security": "max-age=63072000; preload",
            "transfer-encoding": "chunked",
            "vary": "Accept-Encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1;mode=block",
            "traceresponse": "00-de64b45377a31a0e82c807cb3a8e94c5-ca1ceaa2ec47d63c-01",
            "x-dt-tracestate": "acd5d8fe-344161ca@dt"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add a Content-Security-Policy header",
            "urgency": "high",
            "detail": "Add an appropriate CSP to reduce script injection and resource loading risk."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "2 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 30,
        "urgency": "medium",
        "origin": "https://administracion.gob.es",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://administracion.gob.es/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/favicon.ico",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 2403496.2,
        "checks": {
          "hasEffectiveTextCompression": false
        },
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "estimatedSavingsBytes": 1313541,
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "estimatedSavingsBytes": 891965,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "estimatedSavingsBytes": 126680.2,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "estimatedSavingsBytes": 63759,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "estimatedSavingsBytes": 7551,
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings."
          }
        ],
        "recommendations": [
          {
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
          },
          {
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
          },
          {
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 7.37 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 4274500.2,
        "totalEstimatedBlockingMs": 8925,
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable text compression",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat.",
            "estimatedSavingsBytes": 1313541,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,283 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-text-compression"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 1195891,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,168 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 891965,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 871 KiB",
            "urgency": "high",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unused-javascript",
            "title": "Remove unused JavaScript",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code.",
            "estimatedSavingsBytes": 547331,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 535 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-javascript"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 8925,
            "displayValue": "Est savings of 8,930 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 126680.2,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 124 KiB",
            "urgency": "medium",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "offscreen-images",
            "title": "Lazy-load offscreen images",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed.",
            "estimatedSavingsBytes": 121070,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 118 KiB",
            "urgency": "medium",
            "sourceAuditId": "offscreen-images"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 63759,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 62 KiB",
            "urgency": "medium",
            "sourceAuditId": "unminified-javascript"
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss.",
            "estimatedSavingsBytes": 7551,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-optimized-images"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 6712,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-responsive-images"
          }
        ],
        "recommendations": [
          {
            "title": "Enable text compression",
            "urgency": "high",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat. Estimated byte savings: 1.25 MB."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "high",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 1.14 MB."
          },
          {
            "title": "Minify CSS",
            "urgency": "high",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 871.06 KB."
          },
          {
            "title": "Remove unused JavaScript",
            "urgency": "high",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code. Estimated byte savings: 534.50 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 8925 ms."
          },
          {
            "title": "Serve images in next-gen formats",
            "urgency": "medium",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 123.71 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 4,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 2,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "2 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1944705
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.85 MB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.85 MB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 29,
        "urgency": "high",
        "transferBytes": 2254587,
        "css": {
          "unusedBytes": 1195891,
          "ratio": 0.5304257498158199,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 547331,
          "duplicatedBytes": 0,
          "ratio": 0.24276330875677007,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "high",
            "estimatedSavingsBytes": 1195891,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          },
          {
            "area": "javascript",
            "title": "Remove unused JavaScript and feature bundles",
            "urgency": "high",
            "estimatedSavingsBytes": 547331,
            "strategy": "Drop unused packages and feature code, or move them behind route-level or interaction-triggered imports.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 35,
        "urgency": "high",
        "transferBytes": 2254587,
        "estimatedDeferrableBytes": 1864292,
        "renderBlockingMs": 8925,
        "breakdown": {
          "offscreenImageSavings": 121070,
          "unusedJavascriptSavings": 547331,
          "unusedCssSavings": 1195891
        },
        "candidates": [
          {
            "title": "Lazy-load offscreen images",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 121070,
            "strategy": "Load below-the-fold images only when they approach the viewport.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Defer non-critical JavaScript",
            "area": "javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 547331,
            "strategy": "Split bundles and load feature code on interaction or route transition.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1195891,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 8925,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy stylesheet from administracion.gob.es",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from administracion.gob.es",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 254411,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from administracion.gob.es",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.googletagmanager.com",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 145371,
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 34,
        "urgency": "medium",
        "providerCount": 1,
        "requestCount": 2,
        "transferBytes": 290047,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290047,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "medium",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "medium",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          }
        ]
      },
      "redundancy": {
        "score": 65,
        "urgency": "high",
        "transferBytes": 2254587,
        "estimatedRedundantBytes": 1743222,
        "redundancyRatio": 0.77318905857259,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 1195891,
            "displayValue": "Est savings of 1,168 KiB"
          },
          {
            "auditId": "unused-javascript",
            "title": "Reduce unused JavaScript",
            "savingsBytes": 547331,
            "displayValue": "Est savings of 535 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "high",
            "estimatedSavingsBytes": 1195891,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce unused javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 547331,
            "auditId": "unused-javascript",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Enable and verify text compression",
            "urgency": "medium",
            "estimatedSavingsBytes": 1313541,
            "auditId": "uses-text-compression",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 46,
        "urgency": "high",
        "totalTransferBytes": 2254587,
        "heavyRequestCount": 6,
        "heavyBytes": 1925258,
        "heavyRatio": 0.8539293449310228,
        "heavyRequests": [
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "transferSize": 1177193,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "transferSize": 254411,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "transferSize": 159823,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "transferSize": 145371,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-4YNNM3J1E0&cx=c&gtm=4e63p1",
            "transferSize": 144676,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/libs/jquery.mCustomScrollbar.css",
            "transferSize": 43784,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 1220977
          },
          {
            "resourceType": "script",
            "count": 3,
            "transferBytes": 544458
          },
          {
            "resourceType": "image",
            "count": 1,
            "transferBytes": 159823
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "administracion.gob.es",
            "count": 4,
            "transferBytes": 1635211
          },
          {
            "domain": "www.googletagmanager.com",
            "count": 2,
            "transferBytes": 290047
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Lazy-load offscreen images and media galleries",
            "urgency": "medium",
            "estimatedSavingsBytes": 121070,
            "strategy": "Load imagery only when it enters the viewport or when a user opens the relevant section.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Split JavaScript by route or interaction",
            "urgency": "high",
            "estimatedSavingsBytes": 547331,
            "strategy": "Move non-critical bundles behind route-level or event-driven imports so they are only fetched on demand.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy stylesheet asset from administracion.gob.es",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "strategy": "Split this stylesheet so component-specific CSS is delivered only when the component is rendered.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 254411,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0,
          "displayValue": "11.6 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 11.6 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": 0.06,
          "displayValue": "10.8 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- Current value: 10.8 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": 0,
          "displayValue": "Est savings of 535 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- Current value: Est savings of 535 KiB\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 1,168 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 1,168 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 8,930 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 8,930 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": 0,
          "displayValue": "Est savings of 1,283 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- Current value: Est savings of 1,283 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 124 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 124 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 7 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- Current value: Est savings of 7 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 118 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- Current value: Est savings of 118 KiB\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://administracion.gob.es/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/consumidores/compraventa/resolucion-conflictos",
      "status": "ok",
      "finalUrl": "https://administracion.gob.es/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/consumidores/compraventa/resolucion-conflictos",
      "performanceScore": 0.55,
      "bestPracticesScore": 0.79,
      "transferBytes": 2246515,
      "co2Grams": 0.8605981113210003,
      "greenWeb": {
        "page": {
          "hostname": "administracion.gob.es",
          "checked": true,
          "status": "not-green",
          "green": false,
          "hostedBy": null,
          "hostedByWebsite": null,
          "listedProvider": null,
          "partner": null,
          "modified": "2026-03-29T13:38:28.588564",
          "supportingDocuments": [],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/administracion.gob.es",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290044,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "not-green",
          "externalOriginCount": 1,
          "greenCount": 1,
          "notGreenCount": 1,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 70,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/buscador/buscadorsimple.htm|input|text|q|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "q",
            "formContext": "form|get|/buscador/buscadorsimple.htm",
            "hasLabel": false,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 70,
              "urgency": "high",
              "issues": [
                "Missing associated label",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add a programmatic label using <label>, aria-label, or aria-labelledby.",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "Missing associated label",
            "urgency": "high",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 25,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": true,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": false,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Compraventa de productos y servicios: Resolución de conflictos - Compraventa de productos y servicios - Consumidores - Ciudadanos - Tus derechos y obligaciones en la UE - Tu espacio europeo - Punto de Acceso General",
          "lang": "eu",
          "charset": "",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Conoce qué tipo de reclamación puedes interponer como consumidor, cómo se puede iniciar, las fórmulas para tramitar una reclamación.",
          "robots": "all",
          "canonical": "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/consumidores/compraventa/resolucion-conflictos",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 34,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 46,
          "tabletSmallTapTargets": 76,
          "fixedWidthOffenders": 2,
          "oversizedMedia": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 399,
            "viewportHeight": 864,
            "contentWidth": 399,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 2,
            "smallTapTargets": 46,
            "oversizedMedia": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 829,
            "viewportHeight": 1193,
            "contentWidth": 829,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 76,
            "oversizedMedia": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 46 small targets on mobile and 76 on tablet."
          },
          {
            "title": "Refactor fixed-width components",
            "urgency": "medium",
            "detail": "2 element(s) exceeded viewport width in tested layouts; use responsive component constraints."
          }
        ]
      },
      "securityLight": {
        "score": 31,
        "urgency": "medium",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": false,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "connection": "Keep-Alive",
            "content-encoding": "gzip",
            "content-type": "text/html;charset=UTF-8",
            "date": "Mon, 30 Mar 2026 00:29:20 GMT",
            "keep-alive": "timeout=15, max=500",
            "referrer-policy": "origin-when-cross-origin,strict-origin-when-cross-origin",
            "server": "Microsoft-IIS/5.0",
            "set-cookie": "VISITOR=returning; Path=/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/ciudadanos; HttpOnly; Secure; SameSite=None\nTS01a8e1d0=01d9c3d318bf0950b965bada48d495334398e7a4d81a950e85b01dc930419b68c9a1e8639e95ff7a154a24dc16c6430f061b90f0ea52fcc5b3e1b8ca06f6cbb2c8c1d7490cc60437fa57bb67082ccdad709be5a5ee; Path=/; HttpOnly; Secure; SameSite=None\nTS011d349b=01d9c3d3183d0ab5e35f0a4d3b0e06f02e6973180380529b1b9ba56384d07a19b66567890ae44783a444bdd5d48d6a967bacc4b9ad4bff902aea9909935fb9326af3d6d004f98a4d48eaff3a52021502918d296d1fe81761193e34385adc30c5a064c0078b; path=/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/ciudadanos; HttpOnly; Secure; SameSite=None",
            "strict-transport-security": "max-age=63072000; preload",
            "transfer-encoding": "chunked",
            "vary": "Accept-Encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1;mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add a Content-Security-Policy header",
            "urgency": "high",
            "detail": "Add an appropriate CSP to reduce script injection and resource loading risk."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 30,
        "urgency": "medium",
        "origin": "https://administracion.gob.es",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://administracion.gob.es/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/favicon.ico",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 2403496.2,
        "checks": {
          "hasEffectiveTextCompression": false
        },
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "estimatedSavingsBytes": 1313541,
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "estimatedSavingsBytes": 891965,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "estimatedSavingsBytes": 126680.2,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "estimatedSavingsBytes": 63759,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "estimatedSavingsBytes": 7551,
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings."
          }
        ],
        "recommendations": [
          {
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
          },
          {
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
          },
          {
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 7.37 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 4283888.2,
        "totalEstimatedBlockingMs": 9159,
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable text compression",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat.",
            "estimatedSavingsBytes": 1313541,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,283 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-text-compression"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 1195566,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,168 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 891965,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 871 KiB",
            "urgency": "high",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unused-javascript",
            "title": "Remove unused JavaScript",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code.",
            "estimatedSavingsBytes": 547291,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 534 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-javascript"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9159,
            "displayValue": "Est savings of 9,160 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "offscreen-images",
            "title": "Lazy-load offscreen images",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed.",
            "estimatedSavingsBytes": 130823,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 128 KiB",
            "urgency": "medium",
            "sourceAuditId": "offscreen-images"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 126680.2,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 124 KiB",
            "urgency": "medium",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 63759,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 62 KiB",
            "urgency": "medium",
            "sourceAuditId": "unminified-javascript"
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss.",
            "estimatedSavingsBytes": 7551,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-optimized-images"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 6712,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-responsive-images"
          }
        ],
        "recommendations": [
          {
            "title": "Enable text compression",
            "urgency": "high",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat. Estimated byte savings: 1.25 MB."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "high",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 1.14 MB."
          },
          {
            "title": "Minify CSS",
            "urgency": "high",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 871.06 KB."
          },
          {
            "title": "Remove unused JavaScript",
            "urgency": "high",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code. Estimated byte savings: 534.46 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 9159 ms."
          },
          {
            "title": "Lazy-load offscreen images",
            "urgency": "medium",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed. Estimated byte savings: 127.76 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1935137
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.85 MB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.85 MB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 30,
        "urgency": "high",
        "transferBytes": 2246515,
        "css": {
          "unusedBytes": 1195566,
          "ratio": 0.5321869651437894,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 547291,
          "duplicatedBytes": 0,
          "ratio": 0.2436177813190653,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "high",
            "estimatedSavingsBytes": 1195566,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          },
          {
            "area": "javascript",
            "title": "Remove unused JavaScript and feature bundles",
            "urgency": "high",
            "estimatedSavingsBytes": 547291,
            "strategy": "Drop unused packages and feature code, or move them behind route-level or interaction-triggered imports.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 35,
        "urgency": "high",
        "transferBytes": 2246515,
        "estimatedDeferrableBytes": 1873680,
        "renderBlockingMs": 9159,
        "breakdown": {
          "offscreenImageSavings": 130823,
          "unusedJavascriptSavings": 547291,
          "unusedCssSavings": 1195566
        },
        "candidates": [
          {
            "title": "Lazy-load offscreen images",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 130823,
            "strategy": "Load below-the-fold images only when they approach the viewport.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Defer non-critical JavaScript",
            "area": "javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 547291,
            "strategy": "Split bundles and load feature code on interaction or route transition.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1195566,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9159,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy stylesheet from administracion.gob.es",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from administracion.gob.es",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 254418,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from administracion.gob.es",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 159817,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.googletagmanager.com",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 145368,
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 34,
        "urgency": "medium",
        "providerCount": 1,
        "requestCount": 2,
        "transferBytes": 290044,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290044,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "medium",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "medium",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          }
        ]
      },
      "redundancy": {
        "score": 68,
        "urgency": "high",
        "transferBytes": 2246515,
        "estimatedRedundantBytes": 1742857,
        "redundancyRatio": 0.7758047464628547,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 1195566,
            "displayValue": "Est savings of 1,168 KiB"
          },
          {
            "auditId": "unused-javascript",
            "title": "Reduce unused JavaScript",
            "savingsBytes": 547291,
            "displayValue": "Est savings of 534 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "high",
            "estimatedSavingsBytes": 1195566,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce unused javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 547291,
            "auditId": "unused-javascript",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Enable and verify text compression",
            "urgency": "medium",
            "estimatedSavingsBytes": 1313541,
            "auditId": "uses-text-compression",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 46,
        "urgency": "high",
        "totalTransferBytes": 2246515,
        "heavyRequestCount": 6,
        "heavyBytes": 1925256,
        "heavyRatio": 0.856996726040111,
        "heavyRequests": [
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "transferSize": 1177193,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "transferSize": 254418,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "transferSize": 159817,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "transferSize": 145368,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-4YNNM3J1E0&cx=c&gtm=4e63p1",
            "transferSize": 144676,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/libs/jquery.mCustomScrollbar.css",
            "transferSize": 43784,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 1220977
          },
          {
            "resourceType": "script",
            "count": 3,
            "transferBytes": 544462
          },
          {
            "resourceType": "image",
            "count": 1,
            "transferBytes": 159817
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "administracion.gob.es",
            "count": 4,
            "transferBytes": 1635212
          },
          {
            "domain": "www.googletagmanager.com",
            "count": 2,
            "transferBytes": 290044
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Lazy-load offscreen images and media galleries",
            "urgency": "medium",
            "estimatedSavingsBytes": 130823,
            "strategy": "Load imagery only when it enters the viewport or when a user opens the relevant section.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Split JavaScript by route or interaction",
            "urgency": "high",
            "estimatedSavingsBytes": 547291,
            "strategy": "Move non-critical bundles behind route-level or event-driven imports so they are only fetched on demand.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy stylesheet asset from administracion.gob.es",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "strategy": "Split this stylesheet so component-specific CSS is delivered only when the component is rendered.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 254418,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 159817,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0,
          "displayValue": "12.5 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 12.5 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": 0.01,
          "displayValue": "14.6 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- Current value: 14.6 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": 0,
          "displayValue": "Est savings of 534 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- Current value: Est savings of 534 KiB\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 1,168 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 1,168 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 9,160 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 9,160 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": 0,
          "displayValue": "Est savings of 1,283 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- Current value: Est savings of 1,283 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 124 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 124 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 7 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- Current value: Est savings of 7 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 128 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- Current value: Est savings of 128 KiB\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://administracion.gob.es/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/empresas/inicio-gestion-cierre/derechos/patentes-marcas/servicios-oepm",
      "status": "ok",
      "finalUrl": "https://administracion.gob.es/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/empresas/inicio-gestion-cierre/derechos/patentes-marcas/servicios-oepm",
      "performanceScore": 0.55,
      "bestPracticesScore": 0.79,
      "transferBytes": 2192750,
      "co2Grams": 0.8400017398499999,
      "greenWeb": {
        "page": {
          "hostname": "administracion.gob.es",
          "checked": true,
          "status": "not-green",
          "green": false,
          "hostedBy": null,
          "hostedByWebsite": null,
          "listedProvider": null,
          "partner": null,
          "modified": "2026-03-29T13:38:28.588564",
          "supportingDocuments": [],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/administracion.gob.es",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290047,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "not-green",
          "externalOriginCount": 1,
          "greenCount": 1,
          "notGreenCount": 1,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 70,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/buscador/buscadorsimple.htm|input|text|q|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "q",
            "formContext": "form|get|/buscador/buscadorsimple.htm",
            "hasLabel": false,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 70,
              "urgency": "high",
              "issues": [
                "Missing associated label",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add a programmatic label using <label>, aria-label, or aria-labelledby.",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "Missing associated label",
            "urgency": "high",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 25,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": true,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": false,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Servicios que ofrece la Oficina Española de Patentes y Marcas - Patentes y marcas - Derechos de propiedad industrial e intelectual - Puesta en marcha, gestión y cierre de una empresa - Empresas - Tus derechos y obligaciones en la UE - Tu espacio europeo - Punto de Acceso General",
          "lang": "eu",
          "charset": "",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Conoce los servicios que ofrece la Oficina Española de Patentes y Marcas: gratuitos y de pago",
          "robots": "all",
          "canonical": "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/empresas/inicio-gestion-cierre/derechos/patentes-marcas/servicios-oepm",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 30,
          "tabletSmallTapTargets": 70,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 399,
            "viewportHeight": 864,
            "contentWidth": 399,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 30,
            "oversizedMedia": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 829,
            "viewportHeight": 1193,
            "contentWidth": 829,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 70,
            "oversizedMedia": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 30 small targets on mobile and 70 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 33,
        "urgency": "medium",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": false,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 2,
          "externalScriptsWithoutIntegrity": 2,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "connection": "Keep-Alive",
            "content-encoding": "gzip",
            "content-type": "text/html;charset=UTF-8",
            "date": "Mon, 30 Mar 2026 00:29:45 GMT",
            "keep-alive": "timeout=15, max=500",
            "referrer-policy": "origin-when-cross-origin,strict-origin-when-cross-origin",
            "server": "Microsoft-IIS/5.0",
            "set-cookie": "VISITOR=returning; Path=/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/empresas; HttpOnly; Secure; SameSite=None\nTS01a8e1d0=01d9c3d318bf0950b965bada48d495334398e7a4d81a950e85b01dc930419b68c9a1e8639e95ff7a154a24dc16c6430f061b90f0ea52fcc5b3e1b8ca06f6cbb2c8c1d7490cc60437fa57bb67082ccdad709be5a5ee; Path=/; HttpOnly; Secure; SameSite=None\nTS01298ba9=01d9c3d3183d0ab5e35f0a4d3b0e06f02e6973180380529b1b9ba56384d07a19b66567890ae44783a444bdd5d48d6a967bacc4b9ad4bff902aea9909935fb9326af3d6d004f98a4d48eaff3a52021502918d296d1fe81761193e34385adc30c5a064c0078b; path=/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/empresas; HttpOnly; Secure; SameSite=None",
            "strict-transport-security": "max-age=63072000; preload",
            "transfer-encoding": "chunked",
            "vary": "Accept-Encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1;mode=block",
            "traceresponse": "00-9157dea449ee19bdfd8d5e793ac6d337-301e222aefd2872d-01",
            "x-dt-tracestate": "acd5d8fe-344161ca@dt"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add a Content-Security-Policy header",
            "urgency": "high",
            "detail": "Add an appropriate CSP to reduce script injection and resource loading risk."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "2 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 30,
        "urgency": "medium",
        "origin": "https://administracion.gob.es",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://administracion.gob.es/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/favicon.ico",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 2403496.2,
        "checks": {
          "hasEffectiveTextCompression": false
        },
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "estimatedSavingsBytes": 1313541,
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "estimatedSavingsBytes": 891965,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "estimatedSavingsBytes": 126680.2,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "estimatedSavingsBytes": 63759,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "estimatedSavingsBytes": 7551,
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings."
          }
        ],
        "recommendations": [
          {
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
          },
          {
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
          },
          {
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 7.37 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 4229962.2,
        "totalEstimatedBlockingMs": 9466,
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable text compression",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat.",
            "estimatedSavingsBytes": 1313541,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,283 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-text-compression"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 1197113,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,169 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 891965,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 871 KiB",
            "urgency": "high",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unused-javascript",
            "title": "Remove unused JavaScript",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code.",
            "estimatedSavingsBytes": 531526,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 519 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-javascript"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9466,
            "displayValue": "Est savings of 9,470 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 126680.2,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 124 KiB",
            "urgency": "medium",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "offscreen-images",
            "title": "Lazy-load offscreen images",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed.",
            "estimatedSavingsBytes": 91115,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 89 KiB",
            "urgency": "medium",
            "sourceAuditId": "offscreen-images"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 63759,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 62 KiB",
            "urgency": "medium",
            "sourceAuditId": "unminified-javascript"
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss.",
            "estimatedSavingsBytes": 7551,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-optimized-images"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 6712,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-responsive-images"
          }
        ],
        "recommendations": [
          {
            "title": "Enable text compression",
            "urgency": "high",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat. Estimated byte savings: 1.25 MB."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "high",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 1.14 MB."
          },
          {
            "title": "Minify CSS",
            "urgency": "high",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 871.06 KB."
          },
          {
            "title": "Remove unused JavaScript",
            "urgency": "high",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code. Estimated byte savings: 519.07 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 9466 ms."
          },
          {
            "title": "Serve images in next-gen formats",
            "urgency": "medium",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 123.71 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 4,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 2,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "2 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1883456
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.80 MB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.80 MB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 33,
        "urgency": "high",
        "transferBytes": 2192750,
        "css": {
          "unusedBytes": 1197113,
          "ratio": 0.5459413977881655,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 531526,
          "duplicatedBytes": 0,
          "ratio": 0.24240155056435983,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0.125,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "high",
            "estimatedSavingsBytes": 1197113,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          },
          {
            "area": "javascript",
            "title": "Remove unused JavaScript and feature bundles",
            "urgency": "high",
            "estimatedSavingsBytes": 531526,
            "strategy": "Drop unused packages and feature code, or move them behind route-level or interaction-triggered imports.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 35,
        "urgency": "high",
        "transferBytes": 2192750,
        "estimatedDeferrableBytes": 1819754,
        "renderBlockingMs": 9466,
        "breakdown": {
          "offscreenImageSavings": 91115,
          "unusedJavascriptSavings": 531526,
          "unusedCssSavings": 1197113
        },
        "candidates": [
          {
            "title": "Lazy-load offscreen images",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 91115,
            "strategy": "Load below-the-fold images only when they approach the viewport.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Defer non-critical JavaScript",
            "area": "javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 531526,
            "strategy": "Split bundles and load feature code on interaction or route transition.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1197113,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9466,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy stylesheet from administracion.gob.es",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from administracion.gob.es",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 254411,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from administracion.gob.es",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 159817,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.googletagmanager.com",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 145371,
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 34,
        "urgency": "medium",
        "providerCount": 1,
        "requestCount": 2,
        "transferBytes": 290047,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290047,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "medium",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "medium",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          }
        ]
      },
      "redundancy": {
        "score": 78,
        "urgency": "high",
        "transferBytes": 2192750,
        "estimatedRedundantBytes": 1728639,
        "redundancyRatio": 0.7883429483525254,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 1197113,
            "displayValue": "Est savings of 1,169 KiB"
          },
          {
            "auditId": "unused-javascript",
            "title": "Reduce unused JavaScript",
            "savingsBytes": 531526,
            "displayValue": "Est savings of 519 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "high",
            "estimatedSavingsBytes": 1197113,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce unused javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 531526,
            "auditId": "unused-javascript",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Enable and verify text compression",
            "urgency": "medium",
            "estimatedSavingsBytes": 1313541,
            "auditId": "uses-text-compression",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce DOM complexity and redundant markup",
            "urgency": "medium",
            "estimatedSavingsBytes": 0,
            "auditId": "dom-size",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 47,
        "urgency": "high",
        "totalTransferBytes": 2192750,
        "heavyRequestCount": 6,
        "heavyBytes": 1925252,
        "heavyRatio": 0.8780079808459696,
        "heavyRequests": [
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "transferSize": 1177193,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "transferSize": 254411,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "transferSize": 159817,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "transferSize": 145371,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-4YNNM3J1E0&cx=c&gtm=4e63p1",
            "transferSize": 144676,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/libs/jquery.mCustomScrollbar.css",
            "transferSize": 43784,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 1220977
          },
          {
            "resourceType": "script",
            "count": 3,
            "transferBytes": 544458
          },
          {
            "resourceType": "image",
            "count": 1,
            "transferBytes": 159817
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "administracion.gob.es",
            "count": 4,
            "transferBytes": 1635205
          },
          {
            "domain": "www.googletagmanager.com",
            "count": 2,
            "transferBytes": 290047
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Lazy-load offscreen images and media galleries",
            "urgency": "medium",
            "estimatedSavingsBytes": 91115,
            "strategy": "Load imagery only when it enters the viewport or when a user opens the relevant section.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Split JavaScript by route or interaction",
            "urgency": "high",
            "estimatedSavingsBytes": 531526,
            "strategy": "Move non-critical bundles behind route-level or event-driven imports so they are only fetched on demand.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy stylesheet asset from administracion.gob.es",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "strategy": "Split this stylesheet so component-specific CSS is delivered only when the component is rendered.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 254411,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 159817,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0,
          "displayValue": "12.5 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 12.5 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": 0.01,
          "displayValue": "14.2 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- Current value: 14.2 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": 0,
          "displayValue": "Est savings of 519 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- Current value: Est savings of 519 KiB\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 1,169 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 1,169 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 9,470 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 9,470 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": 0,
          "displayValue": "Est savings of 1,283 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- Current value: Est savings of 1,283 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 124 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 124 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 7 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- Current value: Est savings of 7 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 89 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- Current value: Est savings of 89 KiB\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "dom-size",
          "title": "Avoid an excessive DOM size",
          "description": "A large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).",
          "score": 0.5,
          "displayValue": "844 elements",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Avoid an excessive DOM size\n\n- Lighthouse audit: dom-size\n- Current value: 844 elements\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nA large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://administracion.gob.es/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/trabajo-jubilacion/reconocimiento-cualificaciones/asistencia",
      "status": "ok",
      "finalUrl": "https://administracion.gob.es/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/trabajo-jubilacion/reconocimiento-cualificaciones/asistencia",
      "performanceScore": 0.56,
      "bestPracticesScore": 0.79,
      "transferBytes": 2189114,
      "co2Grams": 0.8386088558796,
      "greenWeb": {
        "page": {
          "hostname": "administracion.gob.es",
          "checked": true,
          "status": "not-green",
          "green": false,
          "hostedBy": null,
          "hostedByWebsite": null,
          "listedProvider": null,
          "partner": null,
          "modified": "2026-03-29T13:38:28.588564",
          "supportingDocuments": [],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/administracion.gob.es",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290047,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "not-green",
          "externalOriginCount": 1,
          "greenCount": 1,
          "notGreenCount": 1,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 70,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/buscador/buscadorsimple.htm|input|text|q|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "q",
            "formContext": "form|get|/buscador/buscadorsimple.htm",
            "hasLabel": false,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 70,
              "urgency": "high",
              "issues": [
                "Missing associated label",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add a programmatic label using <label>, aria-label, or aria-labelledby.",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "Missing associated label",
            "urgency": "high",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 25,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": true,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": false,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Centro de asistencia nacional para el reconocimiento de cualificaciones profesionales - Reconocimiento de cualificaciones de profesiones reguladas - Trabajo y jubilación - Ciudadanos - Tus derechos y obligaciones en la UE - Tu espacio europeo - Punto de Acceso General",
          "lang": "eu",
          "charset": "",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Te ofrece información y asesoramiento sobre el reconocimiento de cualificaciones profesionales.",
          "robots": "all",
          "canonical": "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/trabajo-jubilacion/reconocimiento-cualificaciones/asistencia",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 32,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 22,
          "tabletSmallTapTargets": 54,
          "fixedWidthOffenders": 1,
          "oversizedMedia": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 399,
            "viewportHeight": 864,
            "contentWidth": 399,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 1,
            "smallTapTargets": 22,
            "oversizedMedia": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 829,
            "viewportHeight": 1193,
            "contentWidth": 829,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 54,
            "oversizedMedia": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 22 small targets on mobile and 54 on tablet."
          },
          {
            "title": "Refactor fixed-width components",
            "urgency": "medium",
            "detail": "1 element(s) exceeded viewport width in tested layouts; use responsive component constraints."
          }
        ]
      },
      "securityLight": {
        "score": 31,
        "urgency": "medium",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": false,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "connection": "Keep-Alive",
            "content-encoding": "gzip",
            "content-type": "text/html;charset=UTF-8",
            "date": "Mon, 30 Mar 2026 00:30:07 GMT",
            "keep-alive": "timeout=15, max=500",
            "referrer-policy": "origin-when-cross-origin,strict-origin-when-cross-origin",
            "server": "Microsoft-IIS/5.0",
            "set-cookie": "VISITOR=returning; Path=/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/ciudadanos; HttpOnly; Secure; SameSite=None\nTS01a8e1d0=01d9c3d318bf0950b965bada48d495334398e7a4d81a950e85b01dc930419b68c9a1e8639e95ff7a154a24dc16c6430f061b90f0ea52fcc5b3e1b8ca06f6cbb2c8c1d7490cc60437fa57bb67082ccdad709be5a5ee; Path=/; HttpOnly; Secure; SameSite=None\nTS011d349b=01d9c3d3183d0ab5e35f0a4d3b0e06f02e6973180380529b1b9ba56384d07a19b66567890ae44783a444bdd5d48d6a967bacc4b9ad4bff902aea9909935fb9326af3d6d004f98a4d48eaff3a52021502918d296d1fe81761193e34385adc30c5a064c0078b; path=/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/ciudadanos; HttpOnly; Secure; SameSite=None",
            "strict-transport-security": "max-age=63072000; preload",
            "transfer-encoding": "chunked",
            "vary": "Accept-Encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1;mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add a Content-Security-Policy header",
            "urgency": "high",
            "detail": "Add an appropriate CSP to reduce script injection and resource loading risk."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 30,
        "urgency": "medium",
        "origin": "https://administracion.gob.es",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://administracion.gob.es/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/favicon.ico",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 2405028.2,
        "checks": {
          "hasEffectiveTextCompression": false
        },
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "estimatedSavingsBytes": 1315073,
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "estimatedSavingsBytes": 891965,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "estimatedSavingsBytes": 126680.2,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "estimatedSavingsBytes": 63759,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "estimatedSavingsBytes": 7551,
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings."
          }
        ],
        "recommendations": [
          {
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
          },
          {
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
          },
          {
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 7.37 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 4230969.2,
        "totalEstimatedBlockingMs": 9171,
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable text compression",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat.",
            "estimatedSavingsBytes": 1315073,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,284 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-text-compression"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 1197979,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,170 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 891965,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 871 KiB",
            "urgency": "high",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unused-javascript",
            "title": "Remove unused JavaScript",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code.",
            "estimatedSavingsBytes": 545829,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 533 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-javascript"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9171,
            "displayValue": "Est savings of 9,170 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 126680.2,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 124 KiB",
            "urgency": "medium",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "offscreen-images",
            "title": "Lazy-load offscreen images",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed.",
            "estimatedSavingsBytes": 75421,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 74 KiB",
            "urgency": "medium",
            "sourceAuditId": "offscreen-images"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 63759,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 62 KiB",
            "urgency": "medium",
            "sourceAuditId": "unminified-javascript"
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss.",
            "estimatedSavingsBytes": 7551,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-optimized-images"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 6712,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-responsive-images"
          }
        ],
        "recommendations": [
          {
            "title": "Enable text compression",
            "urgency": "high",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat. Estimated byte savings: 1.25 MB."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "high",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 1.14 MB."
          },
          {
            "title": "Minify CSS",
            "urgency": "high",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 871.06 KB."
          },
          {
            "title": "Remove unused JavaScript",
            "urgency": "high",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code. Estimated byte savings: 533.04 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 9171 ms."
          },
          {
            "title": "Serve images in next-gen formats",
            "urgency": "medium",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 123.71 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1885171
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.80 MB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.80 MB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 30,
        "urgency": "high",
        "transferBytes": 2189114,
        "css": {
          "unusedBytes": 1197979,
          "ratio": 0.5472437707675343,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 545829,
          "duplicatedBytes": 0,
          "ratio": 0.2493378599744006,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "high",
            "estimatedSavingsBytes": 1197979,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          },
          {
            "area": "javascript",
            "title": "Remove unused JavaScript and feature bundles",
            "urgency": "high",
            "estimatedSavingsBytes": 545829,
            "strategy": "Drop unused packages and feature code, or move them behind route-level or interaction-triggered imports.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 35,
        "urgency": "high",
        "transferBytes": 2189114,
        "estimatedDeferrableBytes": 1819229,
        "renderBlockingMs": 9171,
        "breakdown": {
          "offscreenImageSavings": 75421,
          "unusedJavascriptSavings": 545829,
          "unusedCssSavings": 1197979
        },
        "candidates": [
          {
            "title": "Lazy-load offscreen images",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 75421,
            "strategy": "Load below-the-fold images only when they approach the viewport.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Defer non-critical JavaScript",
            "area": "javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 545829,
            "strategy": "Split bundles and load feature code on interaction or route transition.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1197979,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9171,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy stylesheet from administracion.gob.es",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from administracion.gob.es",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 254411,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from administracion.gob.es",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 159817,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.googletagmanager.com",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 145371,
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 34,
        "urgency": "medium",
        "providerCount": 1,
        "requestCount": 2,
        "transferBytes": 290047,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290047,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "medium",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "medium",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          }
        ]
      },
      "redundancy": {
        "score": 66,
        "urgency": "high",
        "transferBytes": 2189114,
        "estimatedRedundantBytes": 1743808,
        "redundancyRatio": 0.7965816307419349,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 1197979,
            "displayValue": "Est savings of 1,170 KiB"
          },
          {
            "auditId": "unused-javascript",
            "title": "Reduce unused JavaScript",
            "savingsBytes": 545829,
            "displayValue": "Est savings of 533 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "high",
            "estimatedSavingsBytes": 1197979,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce unused javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 545829,
            "auditId": "unused-javascript",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Enable and verify text compression",
            "urgency": "medium",
            "estimatedSavingsBytes": 1315073,
            "auditId": "uses-text-compression",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 47,
        "urgency": "high",
        "totalTransferBytes": 2189114,
        "heavyRequestCount": 6,
        "heavyBytes": 1925252,
        "heavyRatio": 0.8794663046328332,
        "heavyRequests": [
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "transferSize": 1177193,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "transferSize": 254411,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "transferSize": 159817,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "transferSize": 145371,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-4YNNM3J1E0&cx=c&gtm=4e63p1",
            "transferSize": 144676,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/libs/jquery.mCustomScrollbar.css",
            "transferSize": 43784,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 1220977
          },
          {
            "resourceType": "script",
            "count": 3,
            "transferBytes": 544458
          },
          {
            "resourceType": "image",
            "count": 1,
            "transferBytes": 159817
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "administracion.gob.es",
            "count": 4,
            "transferBytes": 1635205
          },
          {
            "domain": "www.googletagmanager.com",
            "count": 2,
            "transferBytes": 290047
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Lazy-load offscreen images and media galleries",
            "urgency": "medium",
            "estimatedSavingsBytes": 75421,
            "strategy": "Load imagery only when it enters the viewport or when a user opens the relevant section.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Split JavaScript by route or interaction",
            "urgency": "high",
            "estimatedSavingsBytes": 545829,
            "strategy": "Move non-critical bundles behind route-level or event-driven imports so they are only fetched on demand.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy stylesheet asset from administracion.gob.es",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "strategy": "Split this stylesheet so component-specific CSS is delivered only when the component is rendered.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 254411,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 159817,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0,
          "displayValue": "11.8 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 11.8 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": 0.05,
          "displayValue": "11.5 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- Current value: 11.5 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": 0,
          "displayValue": "Est savings of 533 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- Current value: Est savings of 533 KiB\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 1,170 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 1,170 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 9,170 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 9,170 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": 0,
          "displayValue": "Est savings of 1,284 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- Current value: Est savings of 1,284 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 124 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 124 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 7 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- Current value: Est savings of 7 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 74 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- Current value: Est savings of 74 KiB\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://administracion.gob.es/pag_Home/gl/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/familia/pareja/matrimonio",
      "status": "ok",
      "finalUrl": "https://administracion.gob.es/pag_Home/gl/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/familia/pareja/matrimonio",
      "performanceScore": 0.55,
      "bestPracticesScore": 0.79,
      "transferBytes": 2214621,
      "co2Grams": 0.8483801131494,
      "greenWeb": {
        "page": {
          "hostname": "administracion.gob.es",
          "checked": true,
          "status": "not-green",
          "green": false,
          "hostedBy": null,
          "hostedByWebsite": null,
          "listedProvider": null,
          "partner": null,
          "modified": "2026-03-29T13:38:28.588564",
          "supportingDocuments": [],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/administracion.gob.es",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290047,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "not-green",
          "externalOriginCount": 1,
          "greenCount": 1,
          "notGreenCount": 1,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 70,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/buscador/buscadorsimple.htm|input|text|q|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "q",
            "formContext": "form|get|/buscador/buscadorsimple.htm",
            "hasLabel": false,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 70,
              "urgency": "high",
              "issues": [
                "Missing associated label",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add a programmatic label using <label>, aria-label, or aria-labelledby.",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "Missing associated label",
            "urgency": "high",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 25,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": true,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": false,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Matrimonio - Pareja - Ciudadanía y vida familiar - Ciudadanos - Tus derechos y obligaciones en la UE - Tu espacio europeo - Punto de Acceso General",
          "lang": "gl",
          "charset": "",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Conoce qué es el matrimonio, dónde se tramita y cómo se inicia el expediente matrimonial, dónde puede celebrarse y dónde debe inscribirse.",
          "robots": "all",
          "canonical": "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/familia/pareja/matrimonio",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 36,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 47,
          "tabletSmallTapTargets": 78,
          "fixedWidthOffenders": 3,
          "oversizedMedia": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 399,
            "viewportHeight": 864,
            "contentWidth": 399,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 3,
            "smallTapTargets": 47,
            "oversizedMedia": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 829,
            "viewportHeight": 1193,
            "contentWidth": 829,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 78,
            "oversizedMedia": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 47 small targets on mobile and 78 on tablet."
          },
          {
            "title": "Refactor fixed-width components",
            "urgency": "medium",
            "detail": "3 element(s) exceeded viewport width in tested layouts; use responsive component constraints."
          }
        ]
      },
      "securityLight": {
        "score": 31,
        "urgency": "medium",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": false,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "connection": "Keep-Alive",
            "content-encoding": "gzip",
            "content-length": "17689",
            "content-type": "text/html;charset=UTF-8",
            "date": "Mon, 30 Mar 2026 00:30:30 GMT",
            "keep-alive": "timeout=15, max=500",
            "referrer-policy": "origin-when-cross-origin,strict-origin-when-cross-origin",
            "server": "Microsoft-IIS/5.0",
            "set-cookie": "VISITOR=returning; Path=/pag_Home/gl/Tu-espacio-europeo/derechos-obligaciones/ciudadanos; HttpOnly; Secure; SameSite=None\nTS01a8e1d0=01d9c3d318c24c88957b17cbd4a9c3de570506b8934bb5d2e1fe59469b2f1fdc4fc32679c776248f1624bb318aeee90fc88a90be85ae08dbfdacd7f62ac5b13f1916da055976a59f1ec366dac973582501aa40ca32; Path=/; HttpOnly; Secure; SameSite=None\nTS0146228d=01d9c3d31875eb4ee065abf109a5ef141663ea9e5662999d88da62791f603954b0657e3ad206abe0e840a1f31af532847905d0382b90b7a84781f287b0f8ea376c270e95758790e5f992ab8a462f1118463bf9b8565956db104bfe20987b3f54c98e7c3998; path=/pag_Home/gl/Tu-espacio-europeo/derechos-obligaciones/ciudadanos; HttpOnly; Secure; SameSite=None",
            "strict-transport-security": "max-age=63072000; preload",
            "vary": "Accept-Encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1;mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add a Content-Security-Policy header",
            "urgency": "high",
            "detail": "Add an appropriate CSP to reduce script injection and resource loading risk."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 30,
        "urgency": "medium",
        "origin": "https://administracion.gob.es",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://administracion.gob.es/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/favicon.ico",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 2405028.2,
        "checks": {
          "hasEffectiveTextCompression": false
        },
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "estimatedSavingsBytes": 1315073,
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "estimatedSavingsBytes": 891965,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "estimatedSavingsBytes": 126680.2,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "estimatedSavingsBytes": 63759,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "estimatedSavingsBytes": 7551,
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings."
          }
        ],
        "recommendations": [
          {
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
          },
          {
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
          },
          {
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 7.37 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 4257033.2,
        "totalEstimatedBlockingMs": 9177,
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable text compression",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat.",
            "estimatedSavingsBytes": 1315073,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,284 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-text-compression"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 1195464,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,167 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 891965,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 871 KiB",
            "urgency": "high",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unused-javascript",
            "title": "Remove unused JavaScript",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code.",
            "estimatedSavingsBytes": 547292,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 534 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-javascript"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9177,
            "displayValue": "Est savings of 9,180 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 126680.2,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 124 KiB",
            "urgency": "medium",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "offscreen-images",
            "title": "Lazy-load offscreen images",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed.",
            "estimatedSavingsBytes": 102537,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 100 KiB",
            "urgency": "medium",
            "sourceAuditId": "offscreen-images"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 63759,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 62 KiB",
            "urgency": "medium",
            "sourceAuditId": "unminified-javascript"
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss.",
            "estimatedSavingsBytes": 7551,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-optimized-images"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 6712,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-responsive-images"
          }
        ],
        "recommendations": [
          {
            "title": "Enable text compression",
            "urgency": "high",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat. Estimated byte savings: 1.25 MB."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "high",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 1.14 MB."
          },
          {
            "title": "Minify CSS",
            "urgency": "high",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 871.06 KB."
          },
          {
            "title": "Remove unused JavaScript",
            "urgency": "high",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code. Estimated byte savings: 534.46 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 9177 ms."
          },
          {
            "title": "Serve images in next-gen formats",
            "urgency": "medium",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 123.71 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1903934
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.82 MB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.82 MB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 30,
        "urgency": "high",
        "transferBytes": 2214621,
        "css": {
          "unusedBytes": 1195464,
          "ratio": 0.5398052307821519,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 547292,
          "duplicatedBytes": 0,
          "ratio": 0.2471267092653777,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "high",
            "estimatedSavingsBytes": 1195464,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          },
          {
            "area": "javascript",
            "title": "Remove unused JavaScript and feature bundles",
            "urgency": "high",
            "estimatedSavingsBytes": 547292,
            "strategy": "Drop unused packages and feature code, or move them behind route-level or interaction-triggered imports.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 35,
        "urgency": "high",
        "transferBytes": 2214621,
        "estimatedDeferrableBytes": 1845293,
        "renderBlockingMs": 9177,
        "breakdown": {
          "offscreenImageSavings": 102537,
          "unusedJavascriptSavings": 547292,
          "unusedCssSavings": 1195464
        },
        "candidates": [
          {
            "title": "Lazy-load offscreen images",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 102537,
            "strategy": "Load below-the-fold images only when they approach the viewport.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Defer non-critical JavaScript",
            "area": "javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 547292,
            "strategy": "Split bundles and load feature code on interaction or route transition.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1195464,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9177,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy stylesheet from administracion.gob.es",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from administracion.gob.es",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 254418,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from administracion.gob.es",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.googletagmanager.com",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 145371,
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 34,
        "urgency": "medium",
        "providerCount": 1,
        "requestCount": 2,
        "transferBytes": 290047,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290047,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "medium",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "medium",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          }
        ]
      },
      "redundancy": {
        "score": 68,
        "urgency": "high",
        "transferBytes": 2214621,
        "estimatedRedundantBytes": 1742756,
        "redundancyRatio": 0.7869319400475295,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 1195464,
            "displayValue": "Est savings of 1,167 KiB"
          },
          {
            "auditId": "unused-javascript",
            "title": "Reduce unused JavaScript",
            "savingsBytes": 547292,
            "displayValue": "Est savings of 534 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "high",
            "estimatedSavingsBytes": 1195464,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce unused javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 547292,
            "auditId": "unused-javascript",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Enable and verify text compression",
            "urgency": "medium",
            "estimatedSavingsBytes": 1315073,
            "auditId": "uses-text-compression",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 47,
        "urgency": "high",
        "totalTransferBytes": 2214621,
        "heavyRequestCount": 6,
        "heavyBytes": 1925265,
        "heavyRatio": 0.8693428807908893,
        "heavyRequests": [
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "transferSize": 1177193,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "transferSize": 254418,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "transferSize": 159823,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "transferSize": 145371,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-4YNNM3J1E0&cx=c&gtm=4e63p1",
            "transferSize": 144676,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/libs/jquery.mCustomScrollbar.css",
            "transferSize": 43784,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 1220977
          },
          {
            "resourceType": "script",
            "count": 3,
            "transferBytes": 544465
          },
          {
            "resourceType": "image",
            "count": 1,
            "transferBytes": 159823
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "administracion.gob.es",
            "count": 4,
            "transferBytes": 1635218
          },
          {
            "domain": "www.googletagmanager.com",
            "count": 2,
            "transferBytes": 290047
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Lazy-load offscreen images and media galleries",
            "urgency": "medium",
            "estimatedSavingsBytes": 102537,
            "strategy": "Load imagery only when it enters the viewport or when a user opens the relevant section.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Split JavaScript by route or interaction",
            "urgency": "high",
            "estimatedSavingsBytes": 547292,
            "strategy": "Move non-critical bundles behind route-level or event-driven imports so they are only fetched on demand.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy stylesheet asset from administracion.gob.es",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "strategy": "Split this stylesheet so component-specific CSS is delivered only when the component is rendered.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 254418,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0,
          "displayValue": "12.5 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 12.5 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": 0.03,
          "displayValue": "12.4 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- Current value: 12.4 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": 0,
          "displayValue": "Est savings of 534 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- Current value: Est savings of 534 KiB\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 1,167 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 1,167 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 9,180 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 9,180 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": 0,
          "displayValue": "Est savings of 1,284 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- Current value: Est savings of 1,284 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 124 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 124 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 7 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- Current value: Est savings of 7 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 100 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- Current value: Est savings of 100 KiB\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://administracion.gob.es/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/consumidores/conexion-servicios/residuos",
      "status": "ok",
      "finalUrl": "https://administracion.gob.es/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/consumidores/conexion-servicios/residuos",
      "performanceScore": 0.56,
      "bestPracticesScore": 0.79,
      "transferBytes": 2232300,
      "co2Grams": 0.8551526092200001,
      "greenWeb": {
        "page": {
          "hostname": "administracion.gob.es",
          "checked": true,
          "status": "not-green",
          "green": false,
          "hostedBy": null,
          "hostedByWebsite": null,
          "listedProvider": null,
          "partner": null,
          "modified": "2026-03-29T13:38:28.588564",
          "supportingDocuments": [],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/administracion.gob.es",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290047,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "not-green",
          "externalOriginCount": 1,
          "greenCount": 1,
          "notGreenCount": 1,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 70,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/buscador/buscadorsimple.htm|input|text|q|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "q",
            "formContext": "form|get|/buscador/buscadorsimple.htm",
            "hasLabel": false,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 70,
              "urgency": "high",
              "issues": [
                "Missing associated label",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add a programmatic label using <label>, aria-label, or aria-labelledby.",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "Missing associated label",
            "urgency": "high",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 35,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": false,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Disposal of household waste - Connection to utilities - Consumer rights - Citizens - Your rights and obligations in the EU - Tu espacio europeo - Punto de Acceso General",
          "lang": "en",
          "charset": "",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Information about what household waste is, services related to household waste and collection systems",
          "robots": "all",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 32,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 55,
          "tabletSmallTapTargets": 83,
          "fixedWidthOffenders": 1,
          "oversizedMedia": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 399,
            "viewportHeight": 864,
            "contentWidth": 399,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 1,
            "smallTapTargets": 55,
            "oversizedMedia": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 829,
            "viewportHeight": 1193,
            "contentWidth": 829,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 83,
            "oversizedMedia": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 55 small targets on mobile and 83 on tablet."
          },
          {
            "title": "Refactor fixed-width components",
            "urgency": "medium",
            "detail": "1 element(s) exceeded viewport width in tested layouts; use responsive component constraints."
          }
        ]
      },
      "securityLight": {
        "score": 31,
        "urgency": "medium",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": false,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "connection": "Keep-Alive",
            "content-encoding": "gzip",
            "content-type": "text/html;charset=UTF-8",
            "date": "Mon, 30 Mar 2026 00:30:52 GMT",
            "keep-alive": "timeout=15, max=500",
            "referrer-policy": "origin-when-cross-origin,strict-origin-when-cross-origin",
            "server": "Microsoft-IIS/5.0",
            "set-cookie": "VISITOR=returning; Path=/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/ciudadanos; HttpOnly; Secure; SameSite=None\nTS01a8e1d0=01d9c3d318c24c88957b17cbd4a9c3de570506b8934bb5d2e1fe59469b2f1fdc4fc32679c776248f1624bb318aeee90fc88a90be85ae08dbfdacd7f62ac5b13f1916da055976a59f1ec366dac973582501aa40ca32; Path=/; HttpOnly; Secure; SameSite=None\nTS01cc21ed=01d9c3d31875eb4ee065abf109a5ef141663ea9e5662999d88da62791f603954b0657e3ad206abe0e840a1f31af532847905d0382b90b7a84781f287b0f8ea376c270e95758790e5f992ab8a462f1118463bf9b8565956db104bfe20987b3f54c98e7c3998; path=/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/ciudadanos; HttpOnly; Secure; SameSite=None",
            "strict-transport-security": "max-age=63072000; preload",
            "transfer-encoding": "chunked",
            "vary": "Accept-Encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1;mode=block",
            "traceresponse": "00-bcedaa753176b6658217e10ee3a09565-48abdeb233c194b9-01",
            "x-dt-tracestate": "acd5d8fe-344161ca@dt"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add a Content-Security-Policy header",
            "urgency": "high",
            "detail": "Add an appropriate CSP to reduce script injection and resource loading risk."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 30,
        "urgency": "medium",
        "origin": "https://administracion.gob.es",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://administracion.gob.es/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/favicon.ico",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 2403496.2,
        "checks": {
          "hasEffectiveTextCompression": false
        },
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "estimatedSavingsBytes": 1313541,
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "estimatedSavingsBytes": 891965,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "estimatedSavingsBytes": 126680.2,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "estimatedSavingsBytes": 63759,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "estimatedSavingsBytes": 7551,
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings."
          }
        ],
        "recommendations": [
          {
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
          },
          {
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
          },
          {
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 7.37 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 4269268.2,
        "totalEstimatedBlockingMs": 9220,
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable text compression",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat.",
            "estimatedSavingsBytes": 1313541,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,283 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-text-compression"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 1195544,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,168 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 891965,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 871 KiB",
            "urgency": "high",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unused-javascript",
            "title": "Remove unused JavaScript",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code.",
            "estimatedSavingsBytes": 546392,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 534 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-javascript"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9220,
            "displayValue": "Est savings of 9,220 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 126680.2,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 124 KiB",
            "urgency": "medium",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "offscreen-images",
            "title": "Lazy-load offscreen images",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed.",
            "estimatedSavingsBytes": 117124,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 114 KiB",
            "urgency": "medium",
            "sourceAuditId": "offscreen-images"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 63759,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 62 KiB",
            "urgency": "medium",
            "sourceAuditId": "unminified-javascript"
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss.",
            "estimatedSavingsBytes": 7551,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-optimized-images"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 6712,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-responsive-images"
          }
        ],
        "recommendations": [
          {
            "title": "Enable text compression",
            "urgency": "high",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat. Estimated byte savings: 1.25 MB."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "high",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 1.14 MB."
          },
          {
            "title": "Minify CSS",
            "urgency": "high",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 871.06 KB."
          },
          {
            "title": "Remove unused JavaScript",
            "urgency": "high",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code. Estimated byte savings: 533.59 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 9220 ms."
          },
          {
            "title": "Serve images in next-gen formats",
            "urgency": "medium",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 123.71 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1921792
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.83 MB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.83 MB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 30,
        "urgency": "high",
        "transferBytes": 2232300,
        "css": {
          "unusedBytes": 1195544,
          "ratio": 0.535566008153026,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 546392,
          "duplicatedBytes": 0,
          "ratio": 0.24476638444653495,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "high",
            "estimatedSavingsBytes": 1195544,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          },
          {
            "area": "javascript",
            "title": "Remove unused JavaScript and feature bundles",
            "urgency": "high",
            "estimatedSavingsBytes": 546392,
            "strategy": "Drop unused packages and feature code, or move them behind route-level or interaction-triggered imports.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 35,
        "urgency": "high",
        "transferBytes": 2232300,
        "estimatedDeferrableBytes": 1859060,
        "renderBlockingMs": 9220,
        "breakdown": {
          "offscreenImageSavings": 117124,
          "unusedJavascriptSavings": 546392,
          "unusedCssSavings": 1195544
        },
        "candidates": [
          {
            "title": "Lazy-load offscreen images",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 117124,
            "strategy": "Load below-the-fold images only when they approach the viewport.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Defer non-critical JavaScript",
            "area": "javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 546392,
            "strategy": "Split bundles and load feature code on interaction or route transition.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1195544,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9220,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy stylesheet from administracion.gob.es",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from administracion.gob.es",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 254418,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from administracion.gob.es",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.googletagmanager.com",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 145371,
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 34,
        "urgency": "medium",
        "providerCount": 1,
        "requestCount": 2,
        "transferBytes": 290047,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290047,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "medium",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "medium",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          }
        ]
      },
      "redundancy": {
        "score": 68,
        "urgency": "high",
        "transferBytes": 2232300,
        "estimatedRedundantBytes": 1741936,
        "redundancyRatio": 0.780332392599561,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 1195544,
            "displayValue": "Est savings of 1,168 KiB"
          },
          {
            "auditId": "unused-javascript",
            "title": "Reduce unused JavaScript",
            "savingsBytes": 546392,
            "displayValue": "Est savings of 534 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "high",
            "estimatedSavingsBytes": 1195544,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce unused javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 546392,
            "auditId": "unused-javascript",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Enable and verify text compression",
            "urgency": "medium",
            "estimatedSavingsBytes": 1313541,
            "auditId": "uses-text-compression",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 46,
        "urgency": "high",
        "totalTransferBytes": 2232300,
        "heavyRequestCount": 6,
        "heavyBytes": 1925265,
        "heavyRatio": 0.8624580029565918,
        "heavyRequests": [
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "transferSize": 1177193,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "transferSize": 254418,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "transferSize": 159823,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "transferSize": 145371,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-4YNNM3J1E0&cx=c&gtm=4e63p1",
            "transferSize": 144676,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/libs/jquery.mCustomScrollbar.css",
            "transferSize": 43784,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 1220977
          },
          {
            "resourceType": "script",
            "count": 3,
            "transferBytes": 544465
          },
          {
            "resourceType": "image",
            "count": 1,
            "transferBytes": 159823
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "administracion.gob.es",
            "count": 4,
            "transferBytes": 1635218
          },
          {
            "domain": "www.googletagmanager.com",
            "count": 2,
            "transferBytes": 290047
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Lazy-load offscreen images and media galleries",
            "urgency": "medium",
            "estimatedSavingsBytes": 117124,
            "strategy": "Load imagery only when it enters the viewport or when a user opens the relevant section.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Split JavaScript by route or interaction",
            "urgency": "high",
            "estimatedSavingsBytes": 546392,
            "strategy": "Move non-critical bundles behind route-level or event-driven imports so they are only fetched on demand.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy stylesheet asset from administracion.gob.es",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "strategy": "Split this stylesheet so component-specific CSS is delivered only when the component is rendered.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 254418,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0,
          "displayValue": "12.1 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 12.1 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": 0.05,
          "displayValue": "11.2 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- Current value: 11.2 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": 0,
          "displayValue": "Est savings of 534 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- Current value: Est savings of 534 KiB\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 1,168 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 1,168 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 9,220 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 9,220 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": 0,
          "displayValue": "Est savings of 1,283 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- Current value: Est savings of 1,283 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 124 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 124 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 7 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- Current value: Est savings of 7 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 114 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- Current value: Est savings of 114 KiB\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://administracion.gob.es/pag_Home/gl/Tu-espacio-europeo/derechos-obligaciones/empresas/productos/gestion-residuos",
      "status": "ok",
      "finalUrl": "https://administracion.gob.es/pag_Home/gl/Tu-espacio-europeo/derechos-obligaciones/empresas/productos/gestion-residuos",
      "performanceScore": 0.55,
      "bestPracticesScore": 0.79,
      "transferBytes": 2247866,
      "co2Grams": 0.8611156542924001,
      "greenWeb": {
        "page": {
          "hostname": "administracion.gob.es",
          "checked": true,
          "status": "not-green",
          "green": false,
          "hostedBy": null,
          "hostedByWebsite": null,
          "listedProvider": null,
          "partner": null,
          "modified": "2026-03-29T13:38:28.588564",
          "supportingDocuments": [],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/administracion.gob.es",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290047,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "not-green",
          "externalOriginCount": 1,
          "greenCount": 1,
          "notGreenCount": 1,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 70,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/buscador/buscadorsimple.htm|input|text|q|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "q",
            "formContext": "form|get|/buscador/buscadorsimple.htm",
            "hasLabel": false,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 70,
              "urgency": "high",
              "issues": [
                "Missing associated label",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add a programmatic label using <label>, aria-label, or aria-labelledby.",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "Missing associated label",
            "urgency": "high",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 25,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": true,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": false,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Reciclaje y gestión de residuos - Productos - Empresas - Tus derechos y obligaciones en la UE - Tu espacio europeo - Punto de Acceso General",
          "lang": "gl",
          "charset": "",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Conoce qué es y cómo se clasifica un residuo, obligaciones de los productores/poseedores y gestores de residuos, autorizaciones y comunicaciones de las actividades de producción y gestión de residuos, traslados de residuos, responsabilidad ampliada del productor y régimen sancionador.",
          "robots": "all",
          "canonical": "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/empresas/productos/gestion-residuos",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 34,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 69,
          "tabletSmallTapTargets": 99,
          "fixedWidthOffenders": 2,
          "oversizedMedia": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 399,
            "viewportHeight": 864,
            "contentWidth": 399,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 2,
            "smallTapTargets": 69,
            "oversizedMedia": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 829,
            "viewportHeight": 1193,
            "contentWidth": 829,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 99,
            "oversizedMedia": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 69 small targets on mobile and 99 on tablet."
          },
          {
            "title": "Refactor fixed-width components",
            "urgency": "medium",
            "detail": "2 element(s) exceeded viewport width in tested layouts; use responsive component constraints."
          }
        ]
      },
      "securityLight": {
        "score": 33,
        "urgency": "medium",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": false,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 2,
          "externalScriptsWithoutIntegrity": 2,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "connection": "Keep-Alive",
            "content-encoding": "gzip",
            "content-type": "text/html;charset=UTF-8",
            "date": "Mon, 30 Mar 2026 00:31:19 GMT",
            "keep-alive": "timeout=15, max=500",
            "referrer-policy": "origin-when-cross-origin,strict-origin-when-cross-origin",
            "server": "Microsoft-IIS/5.0",
            "set-cookie": "VISITOR=returning; Path=/pag_Home/gl/Tu-espacio-europeo/derechos-obligaciones/empresas; HttpOnly; Secure; SameSite=None\nTS01a8e1d0=01d9c3d318c24c88957b17cbd4a9c3de570506b8934bb5d2e1fe59469b2f1fdc4fc32679c776248f1624bb318aeee90fc88a90be85ae08dbfdacd7f62ac5b13f1916da055976a59f1ec366dac973582501aa40ca32; Path=/; HttpOnly; Secure; SameSite=None\nTS013efc47=01d9c3d318e30d71c8f2baaadc7a422b508ec8f1b51a950e85b01dc930419b68c9a1e8639e95ff7a154a24dc16c6430f061b90f0ea52fcc5b3e1b8ca06f6cbb2c8c1d7490c1d9f388aaa462aa361eb925e482f499148a2e0fb86903edf66edba02ee20c5cf; path=/pag_Home/gl/Tu-espacio-europeo/derechos-obligaciones/empresas; HttpOnly; Secure; SameSite=None",
            "strict-transport-security": "max-age=63072000; preload",
            "transfer-encoding": "chunked",
            "vary": "Accept-Encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1;mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add a Content-Security-Policy header",
            "urgency": "high",
            "detail": "Add an appropriate CSP to reduce script injection and resource loading risk."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "2 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 30,
        "urgency": "medium",
        "origin": "https://administracion.gob.es",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://administracion.gob.es/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/favicon.ico",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 2403496.2,
        "checks": {
          "hasEffectiveTextCompression": false
        },
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "estimatedSavingsBytes": 1313541,
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "estimatedSavingsBytes": 891965,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "estimatedSavingsBytes": 126680.2,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "estimatedSavingsBytes": 63759,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "estimatedSavingsBytes": 7551,
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings."
          }
        ],
        "recommendations": [
          {
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
          },
          {
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
          },
          {
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 7.37 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 4259655.2,
        "totalEstimatedBlockingMs": 9252,
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable text compression",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat.",
            "estimatedSavingsBytes": 1313541,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,283 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-text-compression"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 1194489,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,166 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 891965,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 871 KiB",
            "urgency": "high",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unused-javascript",
            "title": "Remove unused JavaScript",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code.",
            "estimatedSavingsBytes": 531393,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 519 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-javascript"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9252,
            "displayValue": "Est savings of 9,250 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 126680.2,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 124 KiB",
            "urgency": "medium",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "offscreen-images",
            "title": "Lazy-load offscreen images",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed.",
            "estimatedSavingsBytes": 123565,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 121 KiB",
            "urgency": "medium",
            "sourceAuditId": "offscreen-images"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 63759,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 62 KiB",
            "urgency": "medium",
            "sourceAuditId": "unminified-javascript"
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss.",
            "estimatedSavingsBytes": 7551,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-optimized-images"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 6712,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-responsive-images"
          }
        ],
        "recommendations": [
          {
            "title": "Enable text compression",
            "urgency": "high",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat. Estimated byte savings: 1.25 MB."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "high",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 1.14 MB."
          },
          {
            "title": "Minify CSS",
            "urgency": "high",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 871.06 KB."
          },
          {
            "title": "Remove unused JavaScript",
            "urgency": "high",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code. Estimated byte savings: 518.94 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 9252 ms."
          },
          {
            "title": "Serve images in next-gen formats",
            "urgency": "medium",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 123.71 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 4,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 2,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "2 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1931099
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.84 MB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.84 MB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 32,
        "urgency": "high",
        "transferBytes": 2247866,
        "css": {
          "unusedBytes": 1194489,
          "ratio": 0.5313879919888463,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 531393,
          "duplicatedBytes": 0,
          "ratio": 0.23639887786905447,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0.125,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "high",
            "estimatedSavingsBytes": 1194489,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          },
          {
            "area": "javascript",
            "title": "Remove unused JavaScript and feature bundles",
            "urgency": "high",
            "estimatedSavingsBytes": 531393,
            "strategy": "Drop unused packages and feature code, or move them behind route-level or interaction-triggered imports.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 35,
        "urgency": "high",
        "transferBytes": 2247866,
        "estimatedDeferrableBytes": 1849447,
        "renderBlockingMs": 9252,
        "breakdown": {
          "offscreenImageSavings": 123565,
          "unusedJavascriptSavings": 531393,
          "unusedCssSavings": 1194489
        },
        "candidates": [
          {
            "title": "Lazy-load offscreen images",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 123565,
            "strategy": "Load below-the-fold images only when they approach the viewport.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Defer non-critical JavaScript",
            "area": "javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 531393,
            "strategy": "Split bundles and load feature code on interaction or route transition.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1194489,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9252,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy stylesheet from administracion.gob.es",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from administracion.gob.es",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 254418,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from administracion.gob.es",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 159817,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.googletagmanager.com",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 145371,
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 34,
        "urgency": "medium",
        "providerCount": 1,
        "requestCount": 2,
        "transferBytes": 290047,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290047,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "medium",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "medium",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          }
        ]
      },
      "redundancy": {
        "score": 77,
        "urgency": "high",
        "transferBytes": 2247866,
        "estimatedRedundantBytes": 1725882,
        "redundancyRatio": 0.7677868698579008,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 1194489,
            "displayValue": "Est savings of 1,166 KiB"
          },
          {
            "auditId": "unused-javascript",
            "title": "Reduce unused JavaScript",
            "savingsBytes": 531393,
            "displayValue": "Est savings of 519 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "high",
            "estimatedSavingsBytes": 1194489,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce unused javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 531393,
            "auditId": "unused-javascript",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Enable and verify text compression",
            "urgency": "medium",
            "estimatedSavingsBytes": 1313541,
            "auditId": "uses-text-compression",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce DOM complexity and redundant markup",
            "urgency": "medium",
            "estimatedSavingsBytes": 0,
            "auditId": "dom-size",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 46,
        "urgency": "high",
        "totalTransferBytes": 2247866,
        "heavyRequestCount": 6,
        "heavyBytes": 1925259,
        "heavyRatio": 0.8564829932033315,
        "heavyRequests": [
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "transferSize": 1177193,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "transferSize": 254418,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "transferSize": 159817,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "transferSize": 145371,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-4YNNM3J1E0&cx=c&gtm=4e63p1",
            "transferSize": 144676,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/libs/jquery.mCustomScrollbar.css",
            "transferSize": 43784,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 1220977
          },
          {
            "resourceType": "script",
            "count": 3,
            "transferBytes": 544465
          },
          {
            "resourceType": "image",
            "count": 1,
            "transferBytes": 159817
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "administracion.gob.es",
            "count": 4,
            "transferBytes": 1635212
          },
          {
            "domain": "www.googletagmanager.com",
            "count": 2,
            "transferBytes": 290047
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Lazy-load offscreen images and media galleries",
            "urgency": "medium",
            "estimatedSavingsBytes": 123565,
            "strategy": "Load imagery only when it enters the viewport or when a user opens the relevant section.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Split JavaScript by route or interaction",
            "urgency": "high",
            "estimatedSavingsBytes": 531393,
            "strategy": "Move non-critical bundles behind route-level or event-driven imports so they are only fetched on demand.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy stylesheet asset from administracion.gob.es",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "strategy": "Split this stylesheet so component-specific CSS is delivered only when the component is rendered.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 254418,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 159817,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0,
          "displayValue": "12.6 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 12.6 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": 0,
          "displayValue": "15.4 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- Current value: 15.4 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": 0,
          "displayValue": "Est savings of 519 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- Current value: Est savings of 519 KiB\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 1,166 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 1,166 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 9,250 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 9,250 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": 0,
          "displayValue": "Est savings of 1,283 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- Current value: Est savings of 1,283 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 124 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 124 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 7 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- Current value: Est savings of 7 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 121 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- Current value: Est savings of 121 KiB\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "dom-size",
          "title": "Avoid an excessive DOM size",
          "description": "A large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).",
          "score": 0.5,
          "displayValue": "923 elements",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Avoid an excessive DOM size\n\n- Lighthouse audit: dom-size\n- Current value: 923 elements\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nA large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://administracion.gob.es/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/residencia/elecciones/europeas",
      "status": "ok",
      "finalUrl": "https://administracion.gob.es/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/residencia/elecciones/europeas",
      "performanceScore": 0.55,
      "bestPracticesScore": 0.79,
      "transferBytes": 2191151,
      "co2Grams": 0.8393891926914,
      "greenWeb": {
        "page": {
          "hostname": "administracion.gob.es",
          "checked": true,
          "status": "not-green",
          "green": false,
          "hostedBy": null,
          "hostedByWebsite": null,
          "listedProvider": null,
          "partner": null,
          "modified": "2026-03-29T13:38:28.588564",
          "supportingDocuments": [],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/administracion.gob.es",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290047,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "not-green",
          "externalOriginCount": 1,
          "greenCount": 1,
          "notGreenCount": 1,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 70,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/buscador/buscadorsimple.htm|input|text|q|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "q",
            "formContext": "form|get|/buscador/buscadorsimple.htm",
            "hasLabel": false,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 70,
              "urgency": "high",
              "issues": [
                "Missing associated label",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add a programmatic label using <label>, aria-label, or aria-labelledby.",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "Missing associated label",
            "urgency": "high",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 25,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": true,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": false,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Elecciones europeas - Elecciones - Residencia - Ciudadanos - Tus derechos y obligaciones en la UE - Tu espacio europeo - Punto de Acceso General",
          "lang": "eu",
          "charset": "",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Conoce los distintos supuestos para votar en las elecciones europeas en España y los requisitos para los ciudadanos de la UE que quieran presentarse como candidatos",
          "robots": "all",
          "canonical": "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/residencia/eleccionesropeas",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 42,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 32,
          "tabletSmallTapTargets": 64,
          "fixedWidthOffenders": 6,
          "oversizedMedia": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 399,
            "viewportHeight": 864,
            "contentWidth": 399,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 3,
            "smallTapTargets": 32,
            "oversizedMedia": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 829,
            "viewportHeight": 1193,
            "contentWidth": 829,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 3,
            "smallTapTargets": 64,
            "oversizedMedia": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 32 small targets on mobile and 64 on tablet."
          },
          {
            "title": "Refactor fixed-width components",
            "urgency": "medium",
            "detail": "6 element(s) exceeded viewport width in tested layouts; use responsive component constraints."
          }
        ]
      },
      "securityLight": {
        "score": 31,
        "urgency": "medium",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": false,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "connection": "Keep-Alive",
            "content-encoding": "gzip",
            "content-type": "text/html;charset=UTF-8",
            "date": "Mon, 30 Mar 2026 00:31:43 GMT",
            "keep-alive": "timeout=15, max=500",
            "referrer-policy": "origin-when-cross-origin,strict-origin-when-cross-origin",
            "server": "Microsoft-IIS/5.0",
            "set-cookie": "VISITOR=returning; Path=/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/ciudadanos; HttpOnly; Secure; SameSite=None\nTS01a8e1d0=01d9c3d318c24c88957b17cbd4a9c3de570506b8934bb5d2e1fe59469b2f1fdc4fc32679c776248f1624bb318aeee90fc88a90be85ae08dbfdacd7f62ac5b13f1916da055976a59f1ec366dac973582501aa40ca32; Path=/; HttpOnly; Secure; SameSite=None\nTS011d349b=01d9c3d3183d0ab5e35f0a4d3b0e06f02e6973180380529b1b9ba56384d07a19b66567890ae44783a444bdd5d48d6a967bacc4b9ad4bff902aea9909935fb9326af3d6d004f98a4d48eaff3a52021502918d296d1fe81761193e34385adc30c5a064c0078b; path=/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/ciudadanos; HttpOnly; Secure; SameSite=None",
            "strict-transport-security": "max-age=63072000; preload",
            "transfer-encoding": "chunked",
            "vary": "Accept-Encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1;mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add a Content-Security-Policy header",
            "urgency": "high",
            "detail": "Add an appropriate CSP to reduce script injection and resource loading risk."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 30,
        "urgency": "medium",
        "origin": "https://administracion.gob.es",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://administracion.gob.es/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/favicon.ico",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 2403496.2,
        "checks": {
          "hasEffectiveTextCompression": false
        },
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "estimatedSavingsBytes": 1313541,
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "estimatedSavingsBytes": 891965,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "estimatedSavingsBytes": 126680.2,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "estimatedSavingsBytes": 63759,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "estimatedSavingsBytes": 7551,
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings."
          }
        ],
        "recommendations": [
          {
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
          },
          {
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
          },
          {
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 7.37 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 4230435.2,
        "totalEstimatedBlockingMs": 9255,
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable text compression",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat.",
            "estimatedSavingsBytes": 1313541,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,283 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-text-compression"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 1197234,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,169 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 891965,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 871 KiB",
            "urgency": "high",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unused-javascript",
            "title": "Remove unused JavaScript",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code.",
            "estimatedSavingsBytes": 531878,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 519 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-javascript"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9255,
            "displayValue": "Est savings of 9,260 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 126680.2,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 124 KiB",
            "urgency": "medium",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "offscreen-images",
            "title": "Lazy-load offscreen images",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed.",
            "estimatedSavingsBytes": 91115,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 89 KiB",
            "urgency": "medium",
            "sourceAuditId": "offscreen-images"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 63759,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 62 KiB",
            "urgency": "medium",
            "sourceAuditId": "unminified-javascript"
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss.",
            "estimatedSavingsBytes": 7551,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-optimized-images"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 6712,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-responsive-images"
          }
        ],
        "recommendations": [
          {
            "title": "Enable text compression",
            "urgency": "high",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat. Estimated byte savings: 1.25 MB."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "high",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 1.14 MB."
          },
          {
            "title": "Minify CSS",
            "urgency": "high",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 871.06 KB."
          },
          {
            "title": "Remove unused JavaScript",
            "urgency": "high",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code. Estimated byte savings: 519.41 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 9255 ms."
          },
          {
            "title": "Serve images in next-gen formats",
            "urgency": "medium",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 123.71 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1883474
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.80 MB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.80 MB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 30,
        "urgency": "high",
        "transferBytes": 2191151,
        "css": {
          "unusedBytes": 1197234,
          "ratio": 0.5463950225246914,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 531878,
          "duplicatedBytes": 0,
          "ratio": 0.24273909009465802,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "high",
            "estimatedSavingsBytes": 1197234,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          },
          {
            "area": "javascript",
            "title": "Remove unused JavaScript and feature bundles",
            "urgency": "high",
            "estimatedSavingsBytes": 531878,
            "strategy": "Drop unused packages and feature code, or move them behind route-level or interaction-triggered imports.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 35,
        "urgency": "high",
        "transferBytes": 2191151,
        "estimatedDeferrableBytes": 1820227,
        "renderBlockingMs": 9255,
        "breakdown": {
          "offscreenImageSavings": 91115,
          "unusedJavascriptSavings": 531878,
          "unusedCssSavings": 1197234
        },
        "candidates": [
          {
            "title": "Lazy-load offscreen images",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 91115,
            "strategy": "Load below-the-fold images only when they approach the viewport.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Defer non-critical JavaScript",
            "area": "javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 531878,
            "strategy": "Split bundles and load feature code on interaction or route transition.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1197234,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9255,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy stylesheet from administracion.gob.es",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from administracion.gob.es",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 254418,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from administracion.gob.es",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.googletagmanager.com",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 145371,
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 34,
        "urgency": "medium",
        "providerCount": 1,
        "requestCount": 2,
        "transferBytes": 290047,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290047,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "medium",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "medium",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          }
        ]
      },
      "redundancy": {
        "score": 66,
        "urgency": "high",
        "transferBytes": 2191151,
        "estimatedRedundantBytes": 1729112,
        "redundancyRatio": 0.7891341126193494,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 1197234,
            "displayValue": "Est savings of 1,169 KiB"
          },
          {
            "auditId": "unused-javascript",
            "title": "Reduce unused JavaScript",
            "savingsBytes": 531878,
            "displayValue": "Est savings of 519 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "high",
            "estimatedSavingsBytes": 1197234,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce unused javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 531878,
            "auditId": "unused-javascript",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Enable and verify text compression",
            "urgency": "medium",
            "estimatedSavingsBytes": 1313541,
            "auditId": "uses-text-compression",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 47,
        "urgency": "high",
        "totalTransferBytes": 2191151,
        "heavyRequestCount": 6,
        "heavyBytes": 1925265,
        "heavyRatio": 0.8786546431533017,
        "heavyRequests": [
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "transferSize": 1177193,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "transferSize": 254418,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "transferSize": 159823,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "transferSize": 145371,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-4YNNM3J1E0&cx=c&gtm=4e63p1",
            "transferSize": 144676,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/libs/jquery.mCustomScrollbar.css",
            "transferSize": 43784,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 1220977
          },
          {
            "resourceType": "script",
            "count": 3,
            "transferBytes": 544465
          },
          {
            "resourceType": "image",
            "count": 1,
            "transferBytes": 159823
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "administracion.gob.es",
            "count": 4,
            "transferBytes": 1635218
          },
          {
            "domain": "www.googletagmanager.com",
            "count": 2,
            "transferBytes": 290047
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Lazy-load offscreen images and media galleries",
            "urgency": "medium",
            "estimatedSavingsBytes": 91115,
            "strategy": "Load imagery only when it enters the viewport or when a user opens the relevant section.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Split JavaScript by route or interaction",
            "urgency": "high",
            "estimatedSavingsBytes": 531878,
            "strategy": "Move non-critical bundles behind route-level or event-driven imports so they are only fetched on demand.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy stylesheet asset from administracion.gob.es",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "strategy": "Split this stylesheet so component-specific CSS is delivered only when the component is rendered.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 254418,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0,
          "displayValue": "11.9 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 11.9 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": 0.02,
          "displayValue": "12.8 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- Current value: 12.8 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": 0,
          "displayValue": "Est savings of 519 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- Current value: Est savings of 519 KiB\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 1,169 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 1,169 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 9,260 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 9,260 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": 0,
          "displayValue": "Est savings of 1,283 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- Current value: Est savings of 1,283 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 124 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 124 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 7 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- Current value: Est savings of 7 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 89 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- Current value: Est savings of 89 KiB\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://administracion.gob.es/pag_Home/Tramites/hechos-vitales.html",
      "status": "ok",
      "finalUrl": "https://administracion.gob.es/pag_Home/Tramites/hechos-vitales.html",
      "performanceScore": 0.55,
      "bestPracticesScore": 0.75,
      "transferBytes": 2581790,
      "co2Grams": 0.9890357277060002,
      "greenWeb": {
        "page": {
          "hostname": "administracion.gob.es",
          "checked": true,
          "status": "not-green",
          "green": false,
          "hostedBy": null,
          "hostedByWebsite": null,
          "listedProvider": null,
          "partner": null,
          "modified": "2026-03-29T13:38:28.588564",
          "supportingDocuments": [],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/administracion.gob.es",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 145371,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "not-green",
          "externalOriginCount": 1,
          "greenCount": 1,
          "notGreenCount": 1,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 70,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/buscador/buscadorsimple.htm|input|text|q|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "q",
            "formContext": "form|get|/buscador/buscadorsimple.htm",
            "hasLabel": false,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 70,
              "urgency": "high",
              "issues": [
                "Missing associated label",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add a programmatic label using <label>, aria-label, or aria-labelledby.",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "Missing associated label",
            "urgency": "high",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 45,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": false,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": false,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Hechos vitales - Trámites y Servicios Electrónicos - Punto de Acceso General",
          "lang": "es",
          "charset": "",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "",
          "robots": "all",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Add meta description",
            "urgency": "medium",
            "detail": "Provide a concise description to improve machine interpretation and preview quality."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 28,
        "urgency": "low",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 10,
          "tabletSmallTapTargets": 42,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 399,
            "viewportHeight": 864,
            "contentWidth": 399,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 10,
            "oversizedMedia": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 829,
            "viewportHeight": 1193,
            "contentWidth": 829,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 42,
            "oversizedMedia": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "medium",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 10 small targets on mobile and 42 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 31,
        "urgency": "medium",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": false,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "connection": "Keep-Alive",
            "content-encoding": "gzip",
            "content-type": "text/html;charset=UTF-8",
            "date": "Mon, 30 Mar 2026 00:32:06 GMT",
            "keep-alive": "timeout=15, max=499",
            "referrer-policy": "origin-when-cross-origin,strict-origin-when-cross-origin",
            "server": "Microsoft-IIS/5.0",
            "set-cookie": "VISITOR=returning; Path=/pag_Home/Tramites/hechos-vitales.html; HttpOnly; Secure; SameSite=None\nTS01a8e1d0=01d9c3d318c24c88957b17cbd4a9c3de570506b8934bb5d2e1fe59469b2f1fdc4fc32679c776248f1624bb318aeee90fc88a90be85ae08dbfdacd7f62ac5b13f1916da055976a59f1ec366dac973582501aa40ca32; Path=/; HttpOnly; Secure; SameSite=None\nTS0190bf96=01d9c3d318c4ce62233e4ada6b234171acb680a7e24bb5d2e1fe59469b2f1fdc4fc32679c776248f1624bb318aeee90fc88a90be85ae08dbfdacd7f62ac5b13f1916da05596c74b6317e298b889b42264504f511e5b82b54d90e8a18d6a77708d9c29b00ad; path=/pag_Home/Tramites/hechos-vitales.html; HttpOnly; Secure; SameSite=None",
            "strict-transport-security": "max-age=63072000; preload",
            "transfer-encoding": "chunked",
            "vary": "Accept-Encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1;mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add a Content-Security-Policy header",
            "urgency": "high",
            "detail": "Add an appropriate CSP to reduce script injection and resource loading risk."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 30,
        "urgency": "medium",
        "origin": "https://administracion.gob.es",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://administracion.gob.es/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/favicon.ico",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 2889618.75,
        "checks": {
          "hasEffectiveTextCompression": false
        },
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "estimatedSavingsBytes": 1313541,
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "estimatedSavingsBytes": 891965,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "high",
            "estimatedSavingsBytes": 612802.75,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "estimatedSavingsBytes": 63759,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "estimatedSavingsBytes": 7551,
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings."
          }
        ],
        "recommendations": [
          {
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
          },
          {
            "title": "Use modern image compression formats",
            "urgency": "high",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 598.44 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
          },
          {
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 7.37 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 4693420.75,
        "totalEstimatedBlockingMs": 9589,
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable text compression",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat.",
            "estimatedSavingsBytes": 1313541,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,283 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-text-compression"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 1202999,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,175 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 891965,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 871 KiB",
            "urgency": "high",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 612802.75,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 598 KiB",
            "urgency": "high",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "unused-javascript",
            "title": "Remove unused JavaScript",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code.",
            "estimatedSavingsBytes": 481712,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 470 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-javascript"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9589,
            "displayValue": "Est savings of 9,590 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "offscreen-images",
            "title": "Lazy-load offscreen images",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed.",
            "estimatedSavingsBytes": 119091,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 116 KiB",
            "urgency": "medium",
            "sourceAuditId": "offscreen-images"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 63759,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 62 KiB",
            "urgency": "medium",
            "sourceAuditId": "unminified-javascript"
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss.",
            "estimatedSavingsBytes": 7551,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-optimized-images"
          }
        ],
        "recommendations": [
          {
            "title": "Enable text compression",
            "urgency": "high",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat. Estimated byte savings: 1.25 MB."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "high",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 1.15 MB."
          },
          {
            "title": "Minify CSS",
            "urgency": "high",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 871.06 KB."
          },
          {
            "title": "Serve images in next-gen formats",
            "urgency": "high",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 598.44 KB."
          },
          {
            "title": "Remove unused JavaScript",
            "urgency": "high",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code. Estimated byte savings: 470.42 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 9589 ms."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 2331104
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 2.22 MB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 2.22 MB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 25,
        "urgency": "high",
        "transferBytes": 2581790,
        "css": {
          "unusedBytes": 1202999,
          "ratio": 0.4659554030343289,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 481712,
          "duplicatedBytes": 0,
          "ratio": 0.18658062816882862,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "high",
            "estimatedSavingsBytes": 1202999,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          },
          {
            "area": "javascript",
            "title": "Remove unused JavaScript and feature bundles",
            "urgency": "high",
            "estimatedSavingsBytes": 481712,
            "strategy": "Drop unused packages and feature code, or move them behind route-level or interaction-triggered imports.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 32,
        "urgency": "high",
        "transferBytes": 2581790,
        "estimatedDeferrableBytes": 1803802,
        "renderBlockingMs": 9589,
        "breakdown": {
          "offscreenImageSavings": 119091,
          "unusedJavascriptSavings": 481712,
          "unusedCssSavings": 1202999
        },
        "candidates": [
          {
            "title": "Lazy-load offscreen images",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 119091,
            "strategy": "Load below-the-fold images only when they approach the viewport.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Defer non-critical JavaScript",
            "area": "javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 481712,
            "strategy": "Split bundles and load feature code on interaction or route transition.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1202999,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9589,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy stylesheet from administracion.gob.es",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from administracion.gob.es",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 254411,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from administracion.gob.es",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.googletagmanager.com",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 145371,
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 17,
        "urgency": "low",
        "providerCount": 1,
        "requestCount": 1,
        "transferBytes": 145371,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 145371,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "low",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          }
        ]
      },
      "redundancy": {
        "score": 61,
        "urgency": "high",
        "transferBytes": 2581790,
        "estimatedRedundantBytes": 1684711,
        "redundancyRatio": 0.6525360312031575,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 1202999,
            "displayValue": "Est savings of 1,175 KiB"
          },
          {
            "auditId": "unused-javascript",
            "title": "Reduce unused JavaScript",
            "savingsBytes": 481712,
            "displayValue": "Est savings of 470 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "high",
            "estimatedSavingsBytes": 1202999,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce unused javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 481712,
            "auditId": "unused-javascript",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Enable and verify text compression",
            "urgency": "medium",
            "estimatedSavingsBytes": 1313541,
            "auditId": "uses-text-compression",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 40,
        "urgency": "high",
        "totalTransferBytes": 2581790,
        "heavyRequestCount": 6,
        "heavyBytes": 1884225,
        "heavyRatio": 0.7298134240197692,
        "heavyRequests": [
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "transferSize": 1177193,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "transferSize": 254411,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "transferSize": 159823,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "transferSize": 145371,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://administracion.gob.es/pag_Home/Tramites/hechos-vitales.html",
            "transferSize": 103643,
            "resourceType": "document",
            "mimeType": "text/html",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/libs/jquery.mCustomScrollbar.css",
            "transferSize": 43784,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 1220977
          },
          {
            "resourceType": "script",
            "count": 2,
            "transferBytes": 399782
          },
          {
            "resourceType": "image",
            "count": 1,
            "transferBytes": 159823
          },
          {
            "resourceType": "document",
            "count": 1,
            "transferBytes": 103643
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "administracion.gob.es",
            "count": 5,
            "transferBytes": 1738854
          },
          {
            "domain": "www.googletagmanager.com",
            "count": 1,
            "transferBytes": 145371
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Lazy-load offscreen images and media galleries",
            "urgency": "medium",
            "estimatedSavingsBytes": 119091,
            "strategy": "Load imagery only when it enters the viewport or when a user opens the relevant section.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Split JavaScript by route or interaction",
            "urgency": "high",
            "estimatedSavingsBytes": 481712,
            "strategy": "Move non-critical bundles behind route-level or event-driven imports so they are only fetched on demand.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy stylesheet asset from administracion.gob.es",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "strategy": "Split this stylesheet so component-specific CSS is delivered only when the component is rendered.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 254411,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0,
          "displayValue": "13.3 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 13.3 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": 0.03,
          "displayValue": "12.7 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- Current value: 12.7 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": 0,
          "displayValue": "Est savings of 470 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- Current value: Est savings of 470 KiB\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 1,175 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 1,175 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 9,590 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 9,590 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": 0,
          "displayValue": "Est savings of 1,283 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- Current value: Est savings of 1,283 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 598 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 598 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 7 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- Current value: Est savings of 7 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 116 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- Current value: Est savings of 116 KiB\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/trabajo-jubilacion/fiscalidad/pensionistas-transfronterizos",
      "status": "ok",
      "finalUrl": "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/trabajo-jubilacion/fiscalidad/pensionistas-transfronterizos",
      "performanceScore": 0.56,
      "bestPracticesScore": 0.79,
      "transferBytes": 2188407,
      "co2Grams": 0.8383380173298,
      "greenWeb": {
        "page": {
          "hostname": "administracion.gob.es",
          "checked": true,
          "status": "not-green",
          "green": false,
          "hostedBy": null,
          "hostedByWebsite": null,
          "listedProvider": null,
          "partner": null,
          "modified": "2026-03-29T13:38:28.588564",
          "supportingDocuments": [],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/administracion.gob.es",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290047,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "not-green",
          "externalOriginCount": 1,
          "greenCount": 1,
          "notGreenCount": 1,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 70,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/buscador/buscadorsimple.htm|input|text|q|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "q",
            "formContext": "form|get|/buscador/buscadorsimple.htm",
            "hasLabel": false,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 70,
              "urgency": "high",
              "issues": [
                "Missing associated label",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add a programmatic label using <label>, aria-label, or aria-labelledby.",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "Missing associated label",
            "urgency": "high",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 35,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": false,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Pensionistas transfronterizos: Fiscalidad - Fiscalidad - Trabajo y jubilación - Ciudadanos - Tus derechos y obligaciones en la UE - Tu espacio europeo - Punto de Acceso General",
          "lang": "es",
          "charset": "",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Conoce las pensiones de otros países para residentes en España, países con Convenio y sin Convenio para evitar la doble imposición, obligación de declarar por Impuesto de la Renta de las Personas Físicas y recursos y reclamaciones contra liquidaciones tributarias",
          "robots": "all",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 40,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 36,
          "tabletSmallTapTargets": 70,
          "fixedWidthOffenders": 5,
          "oversizedMedia": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 399,
            "viewportHeight": 864,
            "contentWidth": 399,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 5,
            "smallTapTargets": 36,
            "oversizedMedia": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 829,
            "viewportHeight": 1193,
            "contentWidth": 829,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 70,
            "oversizedMedia": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 36 small targets on mobile and 70 on tablet."
          },
          {
            "title": "Refactor fixed-width components",
            "urgency": "medium",
            "detail": "5 element(s) exceeded viewport width in tested layouts; use responsive component constraints."
          }
        ]
      },
      "securityLight": {
        "score": 31,
        "urgency": "medium",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": false,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "connection": "Keep-Alive",
            "content-encoding": "gzip",
            "content-type": "text/html;charset=UTF-8",
            "date": "Mon, 30 Mar 2026 00:32:27 GMT",
            "keep-alive": "timeout=15, max=500",
            "referrer-policy": "origin-when-cross-origin,strict-origin-when-cross-origin",
            "server": "Microsoft-IIS/5.0",
            "set-cookie": "VISITOR=returning; Path=/pag_Home/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/trabajo-jubilacion; HttpOnly; Secure; SameSite=None\nTS01a8e1d0=01d9c3d318c24c88957b17cbd4a9c3de570506b8934bb5d2e1fe59469b2f1fdc4fc32679c776248f1624bb318aeee90fc88a90be85ae08dbfdacd7f62ac5b13f1916da055976a59f1ec366dac973582501aa40ca32; Path=/; HttpOnly; Secure; SameSite=None\nTS01238137=01d9c3d318c4ce62233e4ada6b234171acb680a7e24bb5d2e1fe59469b2f1fdc4fc32679c776248f1624bb318aeee90fc88a90be85ae08dbfdacd7f62ac5b13f1916da05596c74b6317e298b889b42264504f511e5b82b54d90e8a18d6a77708d9c29b00ad; path=/pag_Home/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/trabajo-jubilacion; HttpOnly; Secure; SameSite=None",
            "strict-transport-security": "max-age=63072000; preload",
            "transfer-encoding": "chunked",
            "vary": "Accept-Encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1;mode=block",
            "traceresponse": "00-434dd8944d51cbe323765fbe69338b69-1803a770faa87d93-01",
            "x-dt-tracestate": "acd5d8fe-344161ca@dt"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add a Content-Security-Policy header",
            "urgency": "high",
            "detail": "Add an appropriate CSP to reduce script injection and resource loading risk."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 30,
        "urgency": "medium",
        "origin": "https://administracion.gob.es",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://administracion.gob.es/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/favicon.ico",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 2403496.2,
        "checks": {
          "hasEffectiveTextCompression": false
        },
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "estimatedSavingsBytes": 1313541,
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "estimatedSavingsBytes": 891965,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "estimatedSavingsBytes": 126680.2,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "estimatedSavingsBytes": 63759,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "estimatedSavingsBytes": 7551,
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings."
          }
        ],
        "recommendations": [
          {
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
          },
          {
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
          },
          {
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 7.37 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 4244890.2,
        "totalEstimatedBlockingMs": 9289,
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable text compression",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat.",
            "estimatedSavingsBytes": 1313541,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,283 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-text-compression"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 1198086,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,170 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 891965,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 871 KiB",
            "urgency": "high",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unused-javascript",
            "title": "Remove unused JavaScript",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code.",
            "estimatedSavingsBytes": 545481,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 533 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-javascript"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9289,
            "displayValue": "Est savings of 9,290 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 126680.2,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 124 KiB",
            "urgency": "medium",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "offscreen-images",
            "title": "Lazy-load offscreen images",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed.",
            "estimatedSavingsBytes": 91115,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 89 KiB",
            "urgency": "medium",
            "sourceAuditId": "offscreen-images"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 63759,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 62 KiB",
            "urgency": "medium",
            "sourceAuditId": "unminified-javascript"
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss.",
            "estimatedSavingsBytes": 7551,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-optimized-images"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 6712,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-responsive-images"
          }
        ],
        "recommendations": [
          {
            "title": "Enable text compression",
            "urgency": "high",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat. Estimated byte savings: 1.25 MB."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "high",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 1.14 MB."
          },
          {
            "title": "Minify CSS",
            "urgency": "high",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 871.06 KB."
          },
          {
            "title": "Remove unused JavaScript",
            "urgency": "high",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code. Estimated byte savings: 532.70 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 9289 ms."
          },
          {
            "title": "Serve images in next-gen formats",
            "urgency": "medium",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 123.71 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1881915
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.79 MB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.79 MB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 30,
        "urgency": "high",
        "transferBytes": 2188407,
        "css": {
          "unusedBytes": 1198086,
          "ratio": 0.5474694606624819,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 545481,
          "duplicatedBytes": 0,
          "ratio": 0.2492593927911947,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "high",
            "estimatedSavingsBytes": 1198086,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          },
          {
            "area": "javascript",
            "title": "Remove unused JavaScript and feature bundles",
            "urgency": "high",
            "estimatedSavingsBytes": 545481,
            "strategy": "Drop unused packages and feature code, or move them behind route-level or interaction-triggered imports.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 35,
        "urgency": "high",
        "transferBytes": 2188407,
        "estimatedDeferrableBytes": 1834682,
        "renderBlockingMs": 9289,
        "breakdown": {
          "offscreenImageSavings": 91115,
          "unusedJavascriptSavings": 545481,
          "unusedCssSavings": 1198086
        },
        "candidates": [
          {
            "title": "Lazy-load offscreen images",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 91115,
            "strategy": "Load below-the-fold images only when they approach the viewport.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Defer non-critical JavaScript",
            "area": "javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 545481,
            "strategy": "Split bundles and load feature code on interaction or route transition.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1198086,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9289,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy stylesheet from administracion.gob.es",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from administracion.gob.es",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 254417,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from administracion.gob.es",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.googletagmanager.com",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 145371,
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 34,
        "urgency": "medium",
        "providerCount": 1,
        "requestCount": 2,
        "transferBytes": 290047,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290047,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "medium",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "medium",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          }
        ]
      },
      "redundancy": {
        "score": 69,
        "urgency": "high",
        "transferBytes": 2188407,
        "estimatedRedundantBytes": 1743567,
        "redundancyRatio": 0.7967288534536766,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 1198086,
            "displayValue": "Est savings of 1,170 KiB"
          },
          {
            "auditId": "unused-javascript",
            "title": "Reduce unused JavaScript",
            "savingsBytes": 545481,
            "displayValue": "Est savings of 533 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "high",
            "estimatedSavingsBytes": 1198086,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce unused javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 545481,
            "auditId": "unused-javascript",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Enable and verify text compression",
            "urgency": "medium",
            "estimatedSavingsBytes": 1313541,
            "auditId": "uses-text-compression",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 47,
        "urgency": "high",
        "totalTransferBytes": 2188407,
        "heavyRequestCount": 6,
        "heavyBytes": 1925264,
        "heavyRatio": 0.8797559137765507,
        "heavyRequests": [
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "transferSize": 1177193,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "transferSize": 254417,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "transferSize": 159823,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "transferSize": 145371,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-4YNNM3J1E0&cx=c&gtm=4e63p1",
            "transferSize": 144676,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/libs/jquery.mCustomScrollbar.css",
            "transferSize": 43784,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 1220977
          },
          {
            "resourceType": "script",
            "count": 3,
            "transferBytes": 544464
          },
          {
            "resourceType": "image",
            "count": 1,
            "transferBytes": 159823
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "administracion.gob.es",
            "count": 4,
            "transferBytes": 1635217
          },
          {
            "domain": "www.googletagmanager.com",
            "count": 2,
            "transferBytes": 290047
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Lazy-load offscreen images and media galleries",
            "urgency": "medium",
            "estimatedSavingsBytes": 91115,
            "strategy": "Load imagery only when it enters the viewport or when a user opens the relevant section.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Split JavaScript by route or interaction",
            "urgency": "high",
            "estimatedSavingsBytes": 545481,
            "strategy": "Move non-critical bundles behind route-level or event-driven imports so they are only fetched on demand.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy stylesheet asset from administracion.gob.es",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "strategy": "Split this stylesheet so component-specific CSS is delivered only when the component is rendered.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 254417,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0,
          "displayValue": "12.1 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 12.1 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": 0.06,
          "displayValue": "10.9 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- Current value: 10.9 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": 0,
          "displayValue": "Est savings of 533 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- Current value: Est savings of 533 KiB\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 1,170 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 1,170 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 9,290 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 9,290 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": 0,
          "displayValue": "Est savings of 1,283 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- Current value: Est savings of 1,283 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 124 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 124 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 7 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- Current value: Est savings of 7 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 89 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- Current value: Est savings of 89 KiB\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://administracion.gob.es/pag_Home/atencionCiudadana/encuentraTuOficina.html",
      "status": "ok",
      "finalUrl": "https://administracion.gob.es/pagFront/atencionCiudadana/oficinasEGEO/encuentraOficina.htm",
      "performanceScore": 0.51,
      "bestPracticesScore": 0.54,
      "transferBytes": 7724228,
      "co2Grams": 2.9590080761592006,
      "greenWeb": {
        "page": {
          "hostname": "administracion.gob.es",
          "checked": true,
          "status": "not-green",
          "green": false,
          "hostedBy": null,
          "hostedByWebsite": null,
          "listedProvider": null,
          "partner": null,
          "modified": "2026-03-29T13:38:28.588564",
          "supportingDocuments": [],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/administracion.gob.es",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "egeovisor.redsara.es",
            "resourceType": "script",
            "requestCount": 41,
            "transferBytes": 3315523,
            "sampleUrl": "https://egeovisor.redsara.es/egeo-frontend-web/js/jquery-3.7.1.min.js",
            "greenCheck": {
              "hostname": "egeovisor.redsara.es",
              "checked": true,
              "status": "not-green",
              "green": false,
              "hostedBy": null,
              "hostedByWebsite": null,
              "listedProvider": null,
              "partner": null,
              "modified": "2026-03-29T13:52:57.968174",
              "supportingDocuments": [],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/egeovisor.redsara.es",
              "error": null
            }
          },
          {
            "hostname": "egeovisor.redsara.es",
            "resourceType": "stylesheet",
            "requestCount": 17,
            "transferBytes": 457029,
            "sampleUrl": "https://egeovisor.redsara.es/egeo-frontend-web/css/bootstrap.min.css",
            "greenCheck": {
              "hostname": "egeovisor.redsara.es",
              "checked": true,
              "status": "not-green",
              "green": false,
              "hostedBy": null,
              "hostedByWebsite": null,
              "listedProvider": null,
              "partner": null,
              "modified": "2026-03-29T13:52:57.968174",
              "supportingDocuments": [],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/egeovisor.redsara.es",
              "error": null
            }
          },
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 145478,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          },
          {
            "hostname": "visitas-web.redsara.es",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 44776,
            "sampleUrl": "https://visitas-web.redsara.es/js/",
            "greenCheck": {
              "hostname": "visitas-web.redsara.es",
              "checked": true,
              "status": "not-green",
              "green": false,
              "hostedBy": null,
              "hostedByWebsite": null,
              "listedProvider": null,
              "partner": null,
              "modified": "2026-03-29T13:52:58.129679",
              "supportingDocuments": [],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/visitas-web.redsara.es",
              "error": null
            }
          },
          {
            "hostname": "use.fontawesome.com",
            "resourceType": "stylesheet",
            "requestCount": 1,
            "transferBytes": 13123,
            "sampleUrl": "https://use.fontawesome.com/releases/v5.7.0/css/all.css",
            "greenCheck": {
              "hostname": "use.fontawesome.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Cloudflare",
              "hostedByWebsite": "https://www.cloudflare.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2025-11-25T09:51:02",
              "supportingDocuments": [
                {
                  "id": 18,
                  "title": "Blog post - The Climate and Cloudflare",
                  "link": "https://blog.cloudflare.com/the-climate-and-cloudflare/"
                },
                {
                  "id": 1264,
                  "title": "Cloudflare 2023 Emissions Inventory",
                  "link": "https://media.greenweb.org/uploads/Cloudflare_2023_Emissions_Inventory.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/use.fontawesome.com",
              "error": null
            }
          },
          {
            "hostname": "www.google.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 1012,
            "sampleUrl": "https://www.google.com/recaptcha/api.js?hl=es",
            "greenCheck": {
              "hostname": "www.google.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-17T09:47:17",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.google.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "not-green",
          "externalOriginCount": 6,
          "greenCount": 3,
          "notGreenCount": 4,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 70,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/buscador/buscadorsimple.htm|input|text|q|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "q",
            "formContext": "form|get|/buscador/buscadorsimple.htm",
            "hasLabel": false,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 70,
              "urgency": "high",
              "issues": [
                "Missing associated label",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add a programmatic label using <label>, aria-label, or aria-labelledby.",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "Missing associated label",
            "urgency": "high",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 45,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": false,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": false,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Buscador de Oficinas - Atencion Ciudadana - Inicio",
          "lang": "es",
          "charset": "",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "",
          "robots": "",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Add meta description",
            "urgency": "medium",
            "detail": "Provide a concise description to improve machine interpretation and preview quality."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 18,
          "tabletSmallTapTargets": 51,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 399,
            "viewportHeight": 864,
            "contentWidth": 399,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 18,
            "oversizedMedia": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 829,
            "viewportHeight": 1193,
            "contentWidth": 829,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 51,
            "oversizedMedia": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "medium",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 18 small targets on mobile and 51 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 33,
        "urgency": "medium",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": false,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 3,
          "externalScriptsWithoutIntegrity": 2,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "connection": "Keep-Alive",
            "content-language": "en-US",
            "content-type": "text/html;charset=UTF-8",
            "date": "Mon, 30 Mar 2026 00:33:15 GMT",
            "keep-alive": "timeout=15, max=489",
            "referrer-policy": "origin-when-cross-origin,strict-origin-when-cross-origin",
            "server": "Microsoft-IIS/5.0",
            "strict-transport-security": "max-age=63072000; preload",
            "transfer-encoding": "chunked",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1;mode=block",
            "traceresponse": "00-e5c1a0b2b029afd664b96c2db3f36363-ff87f4a27befe914-00",
            "x-dt-tracestate": "acd5d8fe-344161ca@dt"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add a Content-Security-Policy header",
            "urgency": "high",
            "detail": "Add an appropriate CSP to reduce script injection and resource loading risk."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "2 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 30,
        "urgency": "medium",
        "origin": "https://administracion.gob.es",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://administracion.gob.es/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/favicon.ico",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 42,
        "urgency": "medium",
        "totalEstimatedSavingsBytes": 3229710.5,
        "checks": {
          "hasEffectiveTextCompression": false
        },
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "estimatedSavingsBytes": 1857937,
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "estimatedSavingsBytes": 892048,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "high",
            "estimatedSavingsBytes": 407278.5,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "estimatedSavingsBytes": 64896,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "estimatedSavingsBytes": 7551,
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings."
          }
        ],
        "recommendations": [
          {
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.77 MB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.14 KB."
          },
          {
            "title": "Use modern image compression formats",
            "urgency": "high",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 397.73 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 63.38 KB."
          },
          {
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 7.37 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 5559010.5,
        "totalEstimatedBlockingMs": 11729,
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable text compression",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat.",
            "estimatedSavingsBytes": 1857937,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,814 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-text-compression"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 1210536,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,182 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 892048,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 871 KiB",
            "urgency": "high",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unused-javascript",
            "title": "Remove unused JavaScript",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code.",
            "estimatedSavingsBytes": 658906,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 643 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-javascript"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 407278.5,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 398 KiB",
            "urgency": "high",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 362964,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 354 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-responsive-images"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 11729,
            "displayValue": "Est savings of 11,730 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "offscreen-images",
            "title": "Lazy-load offscreen images",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed.",
            "estimatedSavingsBytes": 96894,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 95 KiB",
            "urgency": "medium",
            "sourceAuditId": "offscreen-images"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 64896,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 63 KiB",
            "urgency": "medium",
            "sourceAuditId": "unminified-javascript"
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss.",
            "estimatedSavingsBytes": 7551,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-optimized-images"
          }
        ],
        "recommendations": [
          {
            "title": "Enable text compression",
            "urgency": "high",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat. Estimated byte savings: 1.77 MB."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "high",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 1.15 MB."
          },
          {
            "title": "Minify CSS",
            "urgency": "high",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 871.14 KB."
          },
          {
            "title": "Remove unused JavaScript",
            "urgency": "high",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code. Estimated byte savings: 643.46 KB."
          },
          {
            "title": "Serve images in next-gen formats",
            "urgency": "high",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 397.73 KB."
          },
          {
            "title": "Right-size images for viewport",
            "urgency": "high",
            "detail": "Avoid sending larger images than the rendered size needs. Estimated byte savings: 354.46 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 4,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 2,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "2 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 7110763
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 6.78 MB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 6.78 MB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 9,
        "urgency": "high",
        "transferBytes": 7724228,
        "css": {
          "unusedBytes": 1210536,
          "ratio": 0.1567193511118522,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 658906,
          "duplicatedBytes": 0,
          "ratio": 0.08530379993961856,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "high",
            "estimatedSavingsBytes": 1210536,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          },
          {
            "area": "javascript",
            "title": "Remove unused JavaScript and feature bundles",
            "urgency": "high",
            "estimatedSavingsBytes": 658906,
            "strategy": "Drop unused packages and feature code, or move them behind route-level or interaction-triggered imports.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 21,
        "urgency": "high",
        "transferBytes": 7724228,
        "estimatedDeferrableBytes": 1966336,
        "renderBlockingMs": 11729,
        "breakdown": {
          "offscreenImageSavings": 96894,
          "unusedJavascriptSavings": 658906,
          "unusedCssSavings": 1210536
        },
        "candidates": [
          {
            "title": "Lazy-load offscreen images",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 96894,
            "strategy": "Load below-the-fold images only when they approach the viewport.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Defer non-critical JavaScript",
            "area": "javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 658906,
            "strategy": "Split bundles and load feature code on interaction or route transition.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1210536,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 11729,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy stylesheet from administracion.gob.es",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1177303,
            "url": "https://administracion.gob.es/pag_Home/resources/templating-kit/themes/pag/css/front-modules.css",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from egeovisor.redsara.es",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 970957,
            "url": "https://egeovisor.redsara.es/egeo-frontend-web/js/datatables/pdfmake-0.1.36/pdfmake.min.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from administracion.gob.es",
            "area": "image",
            "urgency": "high",
            "estimatedSavingsBytes": 452200,
            "url": "https://administracion.gob.es/pag_Home/dam/jcr:92f37d5f-d2b3-4a9f-8ee3-875fa34baf0b/oficina-atencion-fco-gervas.jpg",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 85,
        "urgency": "high",
        "providerCount": 4,
        "requestCount": 45,
        "transferBytes": 3506789,
        "notGreenCount": 2,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "egeovisor.redsara.es",
            "resourceType": "script",
            "requestCount": 41,
            "transferBytes": 3315523,
            "sampleUrl": "https://egeovisor.redsara.es/egeo-frontend-web/js/jquery-3.7.1.min.js",
            "greenCheck": {
              "hostname": "egeovisor.redsara.es",
              "checked": true,
              "status": "not-green",
              "green": false,
              "hostedBy": null,
              "hostedByWebsite": null,
              "listedProvider": null,
              "partner": null,
              "modified": "2026-03-29T13:52:57.968174",
              "supportingDocuments": [],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/egeovisor.redsara.es",
              "error": null
            }
          },
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 145478,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          },
          {
            "hostname": "visitas-web.redsara.es",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 44776,
            "sampleUrl": "https://visitas-web.redsara.es/js/",
            "greenCheck": {
              "hostname": "visitas-web.redsara.es",
              "checked": true,
              "status": "not-green",
              "green": false,
              "hostedBy": null,
              "hostedByWebsite": null,
              "listedProvider": null,
              "partner": null,
              "modified": "2026-03-29T13:52:58.129679",
              "supportingDocuments": [],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/visitas-web.redsara.es",
              "error": null
            }
          },
          {
            "hostname": "www.google.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 1012,
            "sampleUrl": "https://www.google.com/recaptcha/api.js?hl=es",
            "greenCheck": {
              "hostname": "www.google.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-17T09:47:17",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.google.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "high",
            "detail": "Track 4 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "high",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          },
          {
            "title": "Prioritize greener alternatives for third-party providers",
            "urgency": "high",
            "detail": "2 third-party script origin(s) are not confirmed green in the Green Web Foundation dataset."
          }
        ]
      },
      "redundancy": {
        "score": 38,
        "urgency": "high",
        "transferBytes": 7724228,
        "estimatedRedundantBytes": 1869442,
        "redundancyRatio": 0.24202315105147076,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 1210536,
            "displayValue": "Est savings of 1,182 KiB"
          },
          {
            "auditId": "unused-javascript",
            "title": "Reduce unused JavaScript",
            "savingsBytes": 658906,
            "displayValue": "Est savings of 643 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "high",
            "estimatedSavingsBytes": 1210536,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce unused javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 658906,
            "auditId": "unused-javascript",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Enable and verify text compression",
            "urgency": "medium",
            "estimatedSavingsBytes": 1857937,
            "auditId": "uses-text-compression",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 43,
        "urgency": "high",
        "totalTransferBytes": 7724228,
        "heavyRequestCount": 22,
        "heavyBytes": 6049473,
        "heavyRatio": 0.7831815684363538,
        "heavyRequests": [
          {
            "url": "https://administracion.gob.es/pag_Home/resources/templating-kit/themes/pag/css/front-modules.css",
            "transferSize": 1177303,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://egeovisor.redsara.es/egeo-frontend-web/js/datatables/pdfmake-0.1.36/pdfmake.min.js",
            "transferSize": 970957,
            "resourceType": "script",
            "mimeType": "text/javascript",
            "domain": "egeovisor.redsara.es"
          },
          {
            "url": "https://egeovisor.redsara.es/egeo-frontend-web/js/datatables/pdfmake-0.1.36/vfs_fonts.js",
            "transferSize": 870854,
            "resourceType": "script",
            "mimeType": "text/javascript",
            "domain": "egeovisor.redsara.es"
          },
          {
            "url": "https://administracion.gob.es/pag_Home/dam/jcr:92f37d5f-d2b3-4a9f-8ee3-875fa34baf0b/oficina-atencion-fco-gervas.jpg",
            "transferSize": 452200,
            "resourceType": "image",
            "mimeType": "image/jpeg",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://egeovisor.redsara.es/egeo-frontend-web/js/highcharts.js",
            "transferSize": 271635,
            "resourceType": "script",
            "mimeType": "text/javascript",
            "domain": "egeovisor.redsara.es"
          },
          {
            "url": "https://administracion.gob.es/pag_Home/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "transferSize": 254418,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://egeovisor.redsara.es/egeo-frontend-web/js/jquery-ui.min.js",
            "transferSize": 253527,
            "resourceType": "script",
            "mimeType": "text/javascript",
            "domain": "egeovisor.redsara.es"
          },
          {
            "url": "https://egeovisor.redsara.es/egeo-frontend-web/css/bootstrap.min.css",
            "transferSize": 232581,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "egeovisor.redsara.es"
          },
          {
            "url": "https://administracion.gob.es/pag_Home/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "transferSize": 159823,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://egeovisor.redsara.es/egeo-frontend-web/css/fontawesome/webfonts/fa-solid-900.woff2",
            "transferSize": 157016,
            "resourceType": "font",
            "mimeType": "text/plain",
            "domain": "egeovisor.redsara.es"
          },
          {
            "url": "https://egeovisor.redsara.es/egeo-frontend-web/json/getSearchEngineData.action",
            "transferSize": 149613,
            "resourceType": "xhr",
            "mimeType": "application/json",
            "domain": "egeovisor.redsara.es"
          },
          {
            "url": "https://egeovisor.redsara.es/egeo-frontend-web/js/leaflet/leaflet.js",
            "transferSize": 148122,
            "resourceType": "script",
            "mimeType": "text/javascript",
            "domain": "egeovisor.redsara.es"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "transferSize": 145478,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://administracion.gob.es/pag_Home/resources/templating-kit/themes/pag/js/readspeaker/ReadSpeaker.pub.Config.js?v=2.5.7.2752",
            "transferSize": 139929,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://egeovisor.redsara.es/egeo-frontend-web/css/fontawesome/css/all.min.css",
            "transferSize": 103315,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "egeovisor.redsara.es"
          },
          {
            "url": "https://administracion.gob.es/pag_Home/resources/templating-kit/themes/pag/js/libs/jquery.mCustomScrollbar.js",
            "transferSize": 93594,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://egeovisor.redsara.es/egeo-frontend-web/js/datatables/DataTables-1.12.1/js/jquery.dataTables.min.js",
            "transferSize": 91025,
            "resourceType": "script",
            "mimeType": "text/javascript",
            "domain": "egeovisor.redsara.es"
          },
          {
            "url": "https://egeovisor.redsara.es/egeo-frontend-web/js/jquery-3.7.1.min.js",
            "transferSize": 88103,
            "resourceType": "script",
            "mimeType": "text/javascript",
            "domain": "egeovisor.redsara.es"
          },
          {
            "url": "https://administracion.gob.es/pag_Home/resources/templating-kit/themes/pag/js/libs/jquery.min.js",
            "transferSize": 87248,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://egeovisor.redsara.es/egeo-frontend-web/js/bootstrap.bundle.min.js",
            "transferSize": 81395,
            "resourceType": "script",
            "mimeType": "text/javascript",
            "domain": "egeovisor.redsara.es"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "script",
            "count": 14,
            "transferBytes": 3573838
          },
          {
            "resourceType": "stylesheet",
            "count": 4,
            "transferBytes": 1556983
          },
          {
            "resourceType": "image",
            "count": 2,
            "transferBytes": 612023
          },
          {
            "resourceType": "font",
            "count": 1,
            "transferBytes": 157016
          },
          {
            "resourceType": "xhr",
            "count": 1,
            "transferBytes": 149613
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "egeovisor.redsara.es",
            "count": 13,
            "transferBytes": 3495696
          },
          {
            "domain": "administracion.gob.es",
            "count": 8,
            "transferBytes": 2408299
          },
          {
            "domain": "www.googletagmanager.com",
            "count": 1,
            "transferBytes": 145478
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Lazy-load offscreen images and media galleries",
            "urgency": "medium",
            "estimatedSavingsBytes": 96894,
            "strategy": "Load imagery only when it enters the viewport or when a user opens the relevant section.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Split JavaScript by route or interaction",
            "urgency": "high",
            "estimatedSavingsBytes": 658906,
            "strategy": "Move non-critical bundles behind route-level or event-driven imports so they are only fetched on demand.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy stylesheet asset from administracion.gob.es",
            "urgency": "high",
            "estimatedSavingsBytes": 1177303,
            "strategy": "Split this stylesheet so component-specific CSS is delivered only when the component is rendered.",
            "url": "https://administracion.gob.es/pag_Home/resources/templating-kit/themes/pag/css/front-modules.css",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from egeovisor.redsara.es",
            "urgency": "high",
            "estimatedSavingsBytes": 970957,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://egeovisor.redsara.es/egeo-frontend-web/js/datatables/pdfmake-0.1.36/pdfmake.min.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0,
          "displayValue": "15.6 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 15.6 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": 0,
          "displayValue": "22.4 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- Current value: 22.4 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": 0,
          "displayValue": "Est savings of 643 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- Current value: Est savings of 643 KiB\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 1,182 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 1,182 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 11,730 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 11,730 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": 0,
          "displayValue": "Est savings of 1,814 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- Current value: Est savings of 1,814 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 398 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 398 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 7 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- Current value: Est savings of 7 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 95 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- Current value: Est savings of 95 KiB\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "total-byte-weight",
          "title": "Avoid enormous network payloads",
          "description": "Large network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).",
          "score": 0.5,
          "displayValue": "Total size was 7,543 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "5",
            "categoryName": "Business Strategy And Product Management",
            "id": "25",
            "title": "Define performance and environmental budgets",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets",
            "subheading": "Set budgets, taking people, planet, and performance into account alongside baselines, targets, evidence, and resources to help meet KPIs."
          },
          "issueTemplate": "## Improve Avoid enormous network payloads\n\n- Lighthouse audit: total-byte-weight\n- Current value: Total size was 7,543 KiB\n- WSG guideline: 25 Define performance and environmental budgets\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets\n\n### Why this matters\nLarge network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://administracion.gob.es/pag_Home/ca/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/viajes/documentos/pasaportes-perdidos",
      "status": "ok",
      "finalUrl": "https://administracion.gob.es/pag_Home/ca/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/viajes/documentos/pasaportes-perdidos",
      "performanceScore": 0.56,
      "bestPracticesScore": 0.79,
      "transferBytes": 2182992,
      "co2Grams": 0.8362636315488001,
      "greenWeb": {
        "page": {
          "hostname": "administracion.gob.es",
          "checked": true,
          "status": "not-green",
          "green": false,
          "hostedBy": null,
          "hostedByWebsite": null,
          "listedProvider": null,
          "partner": null,
          "modified": "2026-03-29T13:38:28.588564",
          "supportingDocuments": [],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/administracion.gob.es",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290047,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "not-green",
          "externalOriginCount": 1,
          "greenCount": 1,
          "notGreenCount": 1,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 70,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/buscador/buscadorsimple.htm|input|text|q|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "q",
            "formContext": "form|get|/buscador/buscadorsimple.htm",
            "hasLabel": false,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 70,
              "urgency": "high",
              "issues": [
                "Missing associated label",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add a programmatic label using <label>, aria-label, or aria-labelledby.",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "Missing associated label",
            "urgency": "high",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 25,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": true,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": false,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Passaports perduts o robats - Documentos que necessites per viatjar per la UE - Viajar dentro de la UE - Ciudadanos - Tus derechos y obligaciones en la UE - Tu espacio europeo - Punto de Acceso General",
          "lang": "ca",
          "charset": "",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Ciutadà espanyol o d'altres països de la UE que han perdut o els han robat el seu passaport o document d'identitat, document de viatge d'emergència i acords especials o excepcions.",
          "robots": "all",
          "canonical": "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/viajes/documentos/pasaportes-perdidos",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 46,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 31,
          "tabletSmallTapTargets": 62,
          "fixedWidthOffenders": 8,
          "oversizedMedia": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 399,
            "viewportHeight": 864,
            "contentWidth": 399,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 5,
            "smallTapTargets": 31,
            "oversizedMedia": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 829,
            "viewportHeight": 1193,
            "contentWidth": 829,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 3,
            "smallTapTargets": 62,
            "oversizedMedia": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 31 small targets on mobile and 62 on tablet."
          },
          {
            "title": "Refactor fixed-width components",
            "urgency": "medium",
            "detail": "8 element(s) exceeded viewport width in tested layouts; use responsive component constraints."
          }
        ]
      },
      "securityLight": {
        "score": 31,
        "urgency": "medium",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": false,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "connection": "Keep-Alive",
            "content-encoding": "gzip",
            "content-length": "15347",
            "content-type": "text/html;charset=UTF-8",
            "date": "Mon, 30 Mar 2026 00:33:38 GMT",
            "keep-alive": "timeout=15, max=500",
            "referrer-policy": "origin-when-cross-origin,strict-origin-when-cross-origin",
            "server": "Microsoft-IIS/5.0",
            "set-cookie": "VISITOR=returning; Path=/pag_Home/ca/Tu-espacio-europeo/derechos-obligaciones/ciudadanos; HttpOnly; Secure; SameSite=None\nTS01a8e1d0=01d9c3d318c24c88957b17cbd4a9c3de570506b8934bb5d2e1fe59469b2f1fdc4fc32679c776248f1624bb318aeee90fc88a90be85ae08dbfdacd7f62ac5b13f1916da055976a59f1ec366dac973582501aa40ca32; Path=/; HttpOnly; Secure; SameSite=None\nTS01e460c5=01d9c3d31875eb4ee065abf109a5ef141663ea9e5662999d88da62791f603954b0657e3ad206abe0e840a1f31af532847905d0382b90b7a84781f287b0f8ea376c270e95758790e5f992ab8a462f1118463bf9b8565956db104bfe20987b3f54c98e7c3998; path=/pag_Home/ca/Tu-espacio-europeo/derechos-obligaciones/ciudadanos; HttpOnly; Secure; SameSite=None",
            "strict-transport-security": "max-age=63072000; preload",
            "vary": "Accept-Encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1;mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add a Content-Security-Policy header",
            "urgency": "high",
            "detail": "Add an appropriate CSP to reduce script injection and resource loading risk."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 30,
        "urgency": "medium",
        "origin": "https://administracion.gob.es",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://administracion.gob.es/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/favicon.ico",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 2397750.2,
        "checks": {
          "hasEffectiveTextCompression": false
        },
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "estimatedSavingsBytes": 1307795,
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "estimatedSavingsBytes": 891965,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "estimatedSavingsBytes": 126680.2,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "estimatedSavingsBytes": 63759,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "estimatedSavingsBytes": 7551,
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings."
          }
        ],
        "recommendations": [
          {
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
          },
          {
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
          },
          {
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 7.37 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 4224836.2,
        "totalEstimatedBlockingMs": 9091,
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable text compression",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat.",
            "estimatedSavingsBytes": 1307795,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,277 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-text-compression"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 1197809,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,170 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 891965,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 871 KiB",
            "urgency": "high",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unused-javascript",
            "title": "Remove unused JavaScript",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code.",
            "estimatedSavingsBytes": 531450,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 519 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-javascript"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9091,
            "displayValue": "Est savings of 9,090 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 126680.2,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 124 KiB",
            "urgency": "medium",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "offscreen-images",
            "title": "Lazy-load offscreen images",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed.",
            "estimatedSavingsBytes": 91115,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 89 KiB",
            "urgency": "medium",
            "sourceAuditId": "offscreen-images"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 63759,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 62 KiB",
            "urgency": "medium",
            "sourceAuditId": "unminified-javascript"
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss.",
            "estimatedSavingsBytes": 7551,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-optimized-images"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 6712,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-responsive-images"
          }
        ],
        "recommendations": [
          {
            "title": "Enable text compression",
            "urgency": "high",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat. Estimated byte savings: 1.25 MB."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "high",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 1.14 MB."
          },
          {
            "title": "Minify CSS",
            "urgency": "high",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 871.06 KB."
          },
          {
            "title": "Remove unused JavaScript",
            "urgency": "high",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code. Estimated byte savings: 518.99 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 9091 ms."
          },
          {
            "title": "Serve images in next-gen formats",
            "urgency": "medium",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 123.71 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1874728
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.79 MB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.79 MB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 30,
        "urgency": "high",
        "transferBytes": 2182992,
        "css": {
          "unusedBytes": 1197809,
          "ratio": 0.5487005907488438,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 531450,
          "duplicatedBytes": 0,
          "ratio": 0.24345027375272105,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "high",
            "estimatedSavingsBytes": 1197809,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          },
          {
            "area": "javascript",
            "title": "Remove unused JavaScript and feature bundles",
            "urgency": "high",
            "estimatedSavingsBytes": 531450,
            "strategy": "Drop unused packages and feature code, or move them behind route-level or interaction-triggered imports.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 35,
        "urgency": "high",
        "transferBytes": 2182992,
        "estimatedDeferrableBytes": 1820374,
        "renderBlockingMs": 9091,
        "breakdown": {
          "offscreenImageSavings": 91115,
          "unusedJavascriptSavings": 531450,
          "unusedCssSavings": 1197809
        },
        "candidates": [
          {
            "title": "Lazy-load offscreen images",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 91115,
            "strategy": "Load below-the-fold images only when they approach the viewport.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Defer non-critical JavaScript",
            "area": "javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 531450,
            "strategy": "Split bundles and load feature code on interaction or route transition.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1197809,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9091,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy stylesheet from administracion.gob.es",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from administracion.gob.es",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 254418,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from administracion.gob.es",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 159817,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.googletagmanager.com",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 145371,
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 34,
        "urgency": "medium",
        "providerCount": 1,
        "requestCount": 2,
        "transferBytes": 290047,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290047,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "medium",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "medium",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          }
        ]
      },
      "redundancy": {
        "score": 69,
        "urgency": "high",
        "transferBytes": 2182992,
        "estimatedRedundantBytes": 1729259,
        "redundancyRatio": 0.7921508645015648,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 1197809,
            "displayValue": "Est savings of 1,170 KiB"
          },
          {
            "auditId": "unused-javascript",
            "title": "Reduce unused JavaScript",
            "savingsBytes": 531450,
            "displayValue": "Est savings of 519 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "high",
            "estimatedSavingsBytes": 1197809,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce unused javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 531450,
            "auditId": "unused-javascript",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Enable and verify text compression",
            "urgency": "medium",
            "estimatedSavingsBytes": 1307795,
            "auditId": "uses-text-compression",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 47,
        "urgency": "high",
        "totalTransferBytes": 2182992,
        "heavyRequestCount": 6,
        "heavyBytes": 1925259,
        "heavyRatio": 0.8819358934893028,
        "heavyRequests": [
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "transferSize": 1177193,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "transferSize": 254418,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "transferSize": 159817,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "transferSize": 145371,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-4YNNM3J1E0&cx=c&gtm=4e63p1",
            "transferSize": 144676,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/libs/jquery.mCustomScrollbar.css",
            "transferSize": 43784,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 1220977
          },
          {
            "resourceType": "script",
            "count": 3,
            "transferBytes": 544465
          },
          {
            "resourceType": "image",
            "count": 1,
            "transferBytes": 159817
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "administracion.gob.es",
            "count": 4,
            "transferBytes": 1635212
          },
          {
            "domain": "www.googletagmanager.com",
            "count": 2,
            "transferBytes": 290047
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Lazy-load offscreen images and media galleries",
            "urgency": "medium",
            "estimatedSavingsBytes": 91115,
            "strategy": "Load imagery only when it enters the viewport or when a user opens the relevant section.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Split JavaScript by route or interaction",
            "urgency": "high",
            "estimatedSavingsBytes": 531450,
            "strategy": "Move non-critical bundles behind route-level or event-driven imports so they are only fetched on demand.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy stylesheet asset from administracion.gob.es",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "strategy": "Split this stylesheet so component-specific CSS is delivered only when the component is rendered.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 254418,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 159817,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0,
          "displayValue": "11.5 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 11.5 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": 0.08,
          "displayValue": "10.2 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- Current value: 10.2 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": 0,
          "displayValue": "Est savings of 519 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- Current value: Est savings of 519 KiB\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 1,170 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 1,170 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 9,090 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 9,090 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": 0,
          "displayValue": "Est savings of 1,277 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- Current value: Est savings of 1,277 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 124 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 124 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 7 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- Current value: Est savings of 7 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 89 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- Current value: Est savings of 89 KiB\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://administracion.gob.es/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/trabajo-jubilacion/reconocimiento-cualificaciones",
      "status": "ok",
      "finalUrl": "https://administracion.gob.es/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/trabajo-jubilacion/reconocimiento-cualificaciones",
      "performanceScore": 0.55,
      "bestPracticesScore": 0.79,
      "transferBytes": 2188021,
      "co2Grams": 0.8381901479094,
      "greenWeb": {
        "page": {
          "hostname": "administracion.gob.es",
          "checked": true,
          "status": "not-green",
          "green": false,
          "hostedBy": null,
          "hostedByWebsite": null,
          "listedProvider": null,
          "partner": null,
          "modified": "2026-03-29T13:38:28.588564",
          "supportingDocuments": [],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/administracion.gob.es",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290047,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "not-green",
          "externalOriginCount": 1,
          "greenCount": 1,
          "notGreenCount": 1,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 70,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/buscador/buscadorsimple.htm|input|text|q|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "q",
            "formContext": "form|get|/buscador/buscadorsimple.htm",
            "hasLabel": false,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 70,
              "urgency": "high",
              "issues": [
                "Missing associated label",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add a programmatic label using <label>, aria-label, or aria-labelledby.",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "Missing associated label",
            "urgency": "high",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 25,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": true,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": false,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Reconocimiento de cualificaciones de profesiones reguladas - Trabajo y jubilación - Ciudadanos - Tus derechos y obligaciones en la UE - Tu espacio europeo - Punto de Acceso General",
          "lang": "eu",
          "charset": "",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Conoce qué es una profesión regulada, consulta en la base de datos europea las profesiones reguladas en cada país, conoce los efectos de su reconocimiento y más.",
          "robots": "all",
          "canonical": "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/trabajo-jubilacion/reconocimiento-cualificaciones",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 34,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 40,
          "tabletSmallTapTargets": 72,
          "fixedWidthOffenders": 2,
          "oversizedMedia": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 399,
            "viewportHeight": 864,
            "contentWidth": 399,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 2,
            "smallTapTargets": 40,
            "oversizedMedia": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 829,
            "viewportHeight": 1193,
            "contentWidth": 829,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 72,
            "oversizedMedia": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 40 small targets on mobile and 72 on tablet."
          },
          {
            "title": "Refactor fixed-width components",
            "urgency": "medium",
            "detail": "2 element(s) exceeded viewport width in tested layouts; use responsive component constraints."
          }
        ]
      },
      "securityLight": {
        "score": 31,
        "urgency": "medium",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": false,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "connection": "Keep-Alive",
            "content-encoding": "gzip",
            "content-type": "text/html;charset=UTF-8",
            "date": "Mon, 30 Mar 2026 00:34:02 GMT",
            "keep-alive": "timeout=15, max=500",
            "referrer-policy": "origin-when-cross-origin,strict-origin-when-cross-origin",
            "server": "Microsoft-IIS/5.0",
            "set-cookie": "VISITOR=returning; Path=/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/ciudadanos; HttpOnly; Secure; SameSite=None\nTS01a8e1d0=01d9c3d318c24c88957b17cbd4a9c3de570506b8934bb5d2e1fe59469b2f1fdc4fc32679c776248f1624bb318aeee90fc88a90be85ae08dbfdacd7f62ac5b13f1916da055976a59f1ec366dac973582501aa40ca32; Path=/; HttpOnly; Secure; SameSite=None\nTS011d349b=01d9c3d3183d0ab5e35f0a4d3b0e06f02e6973180380529b1b9ba56384d07a19b66567890ae44783a444bdd5d48d6a967bacc4b9ad4bff902aea9909935fb9326af3d6d004f98a4d48eaff3a52021502918d296d1fe81761193e34385adc30c5a064c0078b; path=/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/ciudadanos; HttpOnly; Secure; SameSite=None",
            "strict-transport-security": "max-age=63072000; preload",
            "transfer-encoding": "chunked",
            "vary": "Accept-Encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1;mode=block",
            "traceresponse": "00-44224979dd1f55677b02218bd71603e7-b36d51391d0c3dc2-01",
            "x-dt-tracestate": "acd5d8fe-344161ca@dt"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add a Content-Security-Policy header",
            "urgency": "high",
            "detail": "Add an appropriate CSP to reduce script injection and resource loading risk."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 30,
        "urgency": "medium",
        "origin": "https://administracion.gob.es",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://administracion.gob.es/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/favicon.ico",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 2403496.2,
        "checks": {
          "hasEffectiveTextCompression": false
        },
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "estimatedSavingsBytes": 1313541,
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "estimatedSavingsBytes": 891965,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "estimatedSavingsBytes": 126680.2,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "estimatedSavingsBytes": 63759,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "estimatedSavingsBytes": 7551,
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings."
          }
        ],
        "recommendations": [
          {
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
          },
          {
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
          },
          {
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 7.37 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 4245727.2,
        "totalEstimatedBlockingMs": 8990,
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable text compression",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat.",
            "estimatedSavingsBytes": 1313541,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,283 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-text-compression"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 1197950,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,170 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 891965,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 871 KiB",
            "urgency": "high",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unused-javascript",
            "title": "Remove unused JavaScript",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code.",
            "estimatedSavingsBytes": 546454,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 534 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-javascript"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 8990,
            "displayValue": "Est savings of 8,990 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 126680.2,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 124 KiB",
            "urgency": "medium",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "offscreen-images",
            "title": "Lazy-load offscreen images",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed.",
            "estimatedSavingsBytes": 91115,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 89 KiB",
            "urgency": "medium",
            "sourceAuditId": "offscreen-images"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 63759,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 62 KiB",
            "urgency": "medium",
            "sourceAuditId": "unminified-javascript"
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss.",
            "estimatedSavingsBytes": 7551,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-optimized-images"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 6712,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-responsive-images"
          }
        ],
        "recommendations": [
          {
            "title": "Enable text compression",
            "urgency": "high",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat. Estimated byte savings: 1.25 MB."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "high",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 1.14 MB."
          },
          {
            "title": "Minify CSS",
            "urgency": "high",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 871.06 KB."
          },
          {
            "title": "Remove unused JavaScript",
            "urgency": "high",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code. Estimated byte savings: 533.65 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 8990 ms."
          },
          {
            "title": "Serve images in next-gen formats",
            "urgency": "medium",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 123.71 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1881911
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.79 MB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.79 MB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 30,
        "urgency": "high",
        "transferBytes": 2188021,
        "css": {
          "unusedBytes": 1197950,
          "ratio": 0.547503885931625,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 546454,
          "duplicatedBytes": 0,
          "ratio": 0.24974806000490854,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "high",
            "estimatedSavingsBytes": 1197950,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          },
          {
            "area": "javascript",
            "title": "Remove unused JavaScript and feature bundles",
            "urgency": "high",
            "estimatedSavingsBytes": 546454,
            "strategy": "Drop unused packages and feature code, or move them behind route-level or interaction-triggered imports.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 35,
        "urgency": "high",
        "transferBytes": 2188021,
        "estimatedDeferrableBytes": 1835519,
        "renderBlockingMs": 8990,
        "breakdown": {
          "offscreenImageSavings": 91115,
          "unusedJavascriptSavings": 546454,
          "unusedCssSavings": 1197950
        },
        "candidates": [
          {
            "title": "Lazy-load offscreen images",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 91115,
            "strategy": "Load below-the-fold images only when they approach the viewport.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Defer non-critical JavaScript",
            "area": "javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 546454,
            "strategy": "Split bundles and load feature code on interaction or route transition.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1197950,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 8990,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy stylesheet from administracion.gob.es",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from administracion.gob.es",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 254418,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from administracion.gob.es",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.googletagmanager.com",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 145371,
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 34,
        "urgency": "medium",
        "providerCount": 1,
        "requestCount": 2,
        "transferBytes": 290047,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290047,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "medium",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "medium",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          }
        ]
      },
      "redundancy": {
        "score": 69,
        "urgency": "high",
        "transferBytes": 2188021,
        "estimatedRedundantBytes": 1744404,
        "redundancyRatio": 0.7972519459365335,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 1197950,
            "displayValue": "Est savings of 1,170 KiB"
          },
          {
            "auditId": "unused-javascript",
            "title": "Reduce unused JavaScript",
            "savingsBytes": 546454,
            "displayValue": "Est savings of 534 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "high",
            "estimatedSavingsBytes": 1197950,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce unused javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 546454,
            "auditId": "unused-javascript",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Enable and verify text compression",
            "urgency": "medium",
            "estimatedSavingsBytes": 1313541,
            "auditId": "uses-text-compression",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 47,
        "urgency": "high",
        "totalTransferBytes": 2188021,
        "heavyRequestCount": 6,
        "heavyBytes": 1925265,
        "heavyRatio": 0.8799115730607704,
        "heavyRequests": [
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "transferSize": 1177193,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "transferSize": 254418,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "transferSize": 159823,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "transferSize": 145371,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-4YNNM3J1E0&cx=c&gtm=4e63p1",
            "transferSize": 144676,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/libs/jquery.mCustomScrollbar.css",
            "transferSize": 43784,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 1220977
          },
          {
            "resourceType": "script",
            "count": 3,
            "transferBytes": 544465
          },
          {
            "resourceType": "image",
            "count": 1,
            "transferBytes": 159823
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "administracion.gob.es",
            "count": 4,
            "transferBytes": 1635218
          },
          {
            "domain": "www.googletagmanager.com",
            "count": 2,
            "transferBytes": 290047
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Lazy-load offscreen images and media galleries",
            "urgency": "medium",
            "estimatedSavingsBytes": 91115,
            "strategy": "Load imagery only when it enters the viewport or when a user opens the relevant section.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Split JavaScript by route or interaction",
            "urgency": "high",
            "estimatedSavingsBytes": 546454,
            "strategy": "Move non-critical bundles behind route-level or event-driven imports so they are only fetched on demand.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy stylesheet asset from administracion.gob.es",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "strategy": "Split this stylesheet so component-specific CSS is delivered only when the component is rendered.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 254418,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0,
          "displayValue": "11.8 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 11.8 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": 0.02,
          "displayValue": "13.7 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- Current value: 13.7 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": 0,
          "displayValue": "Est savings of 534 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- Current value: Est savings of 534 KiB\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 1,170 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 1,170 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 8,990 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 8,990 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": 0,
          "displayValue": "Est savings of 1,283 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- Current value: Est savings of 1,283 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 124 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 124 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 7 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- Current value: Est savings of 7 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 89 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- Current value: Est savings of 89 KiB\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://administracion.gob.es/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/empresas/productos/normas-requisitos/productos-industriales",
      "status": "ok",
      "finalUrl": "https://administracion.gob.es/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/empresas/productos/normas-requisitos/productos-industriales",
      "performanceScore": 0.56,
      "bestPracticesScore": 0.79,
      "transferBytes": 2217029,
      "co2Grams": 0.8493025731606001,
      "greenWeb": {
        "page": {
          "hostname": "administracion.gob.es",
          "checked": true,
          "status": "not-green",
          "green": false,
          "hostedBy": null,
          "hostedByWebsite": null,
          "listedProvider": null,
          "partner": null,
          "modified": "2026-03-29T13:38:28.588564",
          "supportingDocuments": [],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/administracion.gob.es",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290047,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "not-green",
          "externalOriginCount": 1,
          "greenCount": 1,
          "notGreenCount": 1,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 70,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/buscador/buscadorsimple.htm|input|text|q|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "q",
            "formContext": "form|get|/buscador/buscadorsimple.htm",
            "hasLabel": false,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 70,
              "urgency": "high",
              "issues": [
                "Missing associated label",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add a programmatic label using <label>, aria-label, or aria-labelledby.",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "Missing associated label",
            "urgency": "high",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 35,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": false,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Standards and requirements related to industrial products - Product standards and requirements - Goods - Business - Your rights and obligations in the EU - Tu espacio europeo - Punto de Acceso General",
          "lang": "en",
          "charset": "",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "information about industrial products subject to and not subject to harmonised legislation, construction products and registers.",
          "robots": "all",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 34,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 68,
          "tabletSmallTapTargets": 102,
          "fixedWidthOffenders": 2,
          "oversizedMedia": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 399,
            "viewportHeight": 864,
            "contentWidth": 399,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 2,
            "smallTapTargets": 68,
            "oversizedMedia": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 829,
            "viewportHeight": 1193,
            "contentWidth": 829,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 102,
            "oversizedMedia": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 68 small targets on mobile and 102 on tablet."
          },
          {
            "title": "Refactor fixed-width components",
            "urgency": "medium",
            "detail": "2 element(s) exceeded viewport width in tested layouts; use responsive component constraints."
          }
        ]
      },
      "securityLight": {
        "score": 31,
        "urgency": "medium",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": false,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "connection": "Keep-Alive",
            "content-encoding": "gzip",
            "content-type": "text/html;charset=UTF-8",
            "date": "Mon, 30 Mar 2026 00:34:24 GMT",
            "keep-alive": "timeout=15, max=500",
            "referrer-policy": "origin-when-cross-origin,strict-origin-when-cross-origin",
            "server": "Microsoft-IIS/5.0",
            "set-cookie": "VISITOR=returning; Path=/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/empresas; HttpOnly; Secure; SameSite=None\nTS01a8e1d0=01d9c3d318c24c88957b17cbd4a9c3de570506b8934bb5d2e1fe59469b2f1fdc4fc32679c776248f1624bb318aeee90fc88a90be85ae08dbfdacd7f62ac5b13f1916da055976a59f1ec366dac973582501aa40ca32; Path=/; HttpOnly; Secure; SameSite=None\nTS01e4c404=01d9c3d3183d0ab5e35f0a4d3b0e06f02e6973180380529b1b9ba56384d07a19b66567890ae44783a444bdd5d48d6a967bacc4b9ad4bff902aea9909935fb9326af3d6d004f98a4d48eaff3a52021502918d296d1fe81761193e34385adc30c5a064c0078b; path=/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/empresas; HttpOnly; Secure; SameSite=None",
            "strict-transport-security": "max-age=63072000; preload",
            "transfer-encoding": "chunked",
            "vary": "Accept-Encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1;mode=block",
            "traceresponse": "00-c537ce5f8ac60479365f626e1eabca03-0d46d74d242c9766-01",
            "x-dt-tracestate": "acd5d8fe-344161ca@dt"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add a Content-Security-Policy header",
            "urgency": "high",
            "detail": "Add an appropriate CSP to reduce script injection and resource loading risk."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 30,
        "urgency": "medium",
        "origin": "https://administracion.gob.es",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://administracion.gob.es/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/favicon.ico",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 2403496.2,
        "checks": {
          "hasEffectiveTextCompression": false
        },
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "estimatedSavingsBytes": 1313541,
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "estimatedSavingsBytes": 891965,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "estimatedSavingsBytes": 126680.2,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "estimatedSavingsBytes": 63759,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "estimatedSavingsBytes": 7551,
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings."
          }
        ],
        "recommendations": [
          {
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
          },
          {
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
          },
          {
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 7.37 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 4259901.2,
        "totalEstimatedBlockingMs": 9197,
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable text compression",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat.",
            "estimatedSavingsBytes": 1313541,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,283 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-text-compression"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 1195408,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,167 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 891965,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 871 KiB",
            "urgency": "high",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unused-javascript",
            "title": "Remove unused JavaScript",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code.",
            "estimatedSavingsBytes": 547289,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 534 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-javascript"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9197,
            "displayValue": "Est savings of 9,200 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 126680.2,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 124 KiB",
            "urgency": "medium",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "offscreen-images",
            "title": "Lazy-load offscreen images",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed.",
            "estimatedSavingsBytes": 106996,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 104 KiB",
            "urgency": "medium",
            "sourceAuditId": "offscreen-images"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 63759,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 62 KiB",
            "urgency": "medium",
            "sourceAuditId": "unminified-javascript"
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss.",
            "estimatedSavingsBytes": 7551,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-optimized-images"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 6712,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-responsive-images"
          }
        ],
        "recommendations": [
          {
            "title": "Enable text compression",
            "urgency": "high",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat. Estimated byte savings: 1.25 MB."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "high",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 1.14 MB."
          },
          {
            "title": "Minify CSS",
            "urgency": "high",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 871.06 KB."
          },
          {
            "title": "Remove unused JavaScript",
            "urgency": "high",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code. Estimated byte savings: 534.46 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 9197 ms."
          },
          {
            "title": "Serve images in next-gen formats",
            "urgency": "medium",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 123.71 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1904902
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.82 MB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.82 MB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 30,
        "urgency": "high",
        "transferBytes": 2217029,
        "css": {
          "unusedBytes": 1195408,
          "ratio": 0.5391936686439375,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 547289,
          "duplicatedBytes": 0,
          "ratio": 0.24685694233138133,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "high",
            "estimatedSavingsBytes": 1195408,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          },
          {
            "area": "javascript",
            "title": "Remove unused JavaScript and feature bundles",
            "urgency": "high",
            "estimatedSavingsBytes": 547289,
            "strategy": "Drop unused packages and feature code, or move them behind route-level or interaction-triggered imports.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 35,
        "urgency": "high",
        "transferBytes": 2217029,
        "estimatedDeferrableBytes": 1849693,
        "renderBlockingMs": 9197,
        "breakdown": {
          "offscreenImageSavings": 106996,
          "unusedJavascriptSavings": 547289,
          "unusedCssSavings": 1195408
        },
        "candidates": [
          {
            "title": "Lazy-load offscreen images",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 106996,
            "strategy": "Load below-the-fold images only when they approach the viewport.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Defer non-critical JavaScript",
            "area": "javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 547289,
            "strategy": "Split bundles and load feature code on interaction or route transition.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1195408,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9197,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy stylesheet from administracion.gob.es",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from administracion.gob.es",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 254418,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from administracion.gob.es",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.googletagmanager.com",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 145371,
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 34,
        "urgency": "medium",
        "providerCount": 1,
        "requestCount": 2,
        "transferBytes": 290047,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290047,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "medium",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "medium",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          }
        ]
      },
      "redundancy": {
        "score": 68,
        "urgency": "high",
        "transferBytes": 2217029,
        "estimatedRedundantBytes": 1742697,
        "redundancyRatio": 0.7860506109753188,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 1195408,
            "displayValue": "Est savings of 1,167 KiB"
          },
          {
            "auditId": "unused-javascript",
            "title": "Reduce unused JavaScript",
            "savingsBytes": 547289,
            "displayValue": "Est savings of 534 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "high",
            "estimatedSavingsBytes": 1195408,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce unused javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 547289,
            "auditId": "unused-javascript",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Enable and verify text compression",
            "urgency": "medium",
            "estimatedSavingsBytes": 1313541,
            "auditId": "uses-text-compression",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 47,
        "urgency": "high",
        "totalTransferBytes": 2217029,
        "heavyRequestCount": 6,
        "heavyBytes": 1925265,
        "heavyRatio": 0.8683986542350145,
        "heavyRequests": [
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "transferSize": 1177193,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "transferSize": 254418,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "transferSize": 159823,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "transferSize": 145371,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-4YNNM3J1E0&cx=c&gtm=4e63p1",
            "transferSize": 144676,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/libs/jquery.mCustomScrollbar.css",
            "transferSize": 43784,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 1220977
          },
          {
            "resourceType": "script",
            "count": 3,
            "transferBytes": 544465
          },
          {
            "resourceType": "image",
            "count": 1,
            "transferBytes": 159823
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "administracion.gob.es",
            "count": 4,
            "transferBytes": 1635218
          },
          {
            "domain": "www.googletagmanager.com",
            "count": 2,
            "transferBytes": 290047
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Lazy-load offscreen images and media galleries",
            "urgency": "medium",
            "estimatedSavingsBytes": 106996,
            "strategy": "Load imagery only when it enters the viewport or when a user opens the relevant section.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Split JavaScript by route or interaction",
            "urgency": "high",
            "estimatedSavingsBytes": 547289,
            "strategy": "Move non-critical bundles behind route-level or event-driven imports so they are only fetched on demand.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy stylesheet asset from administracion.gob.es",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "strategy": "Split this stylesheet so component-specific CSS is delivered only when the component is rendered.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 254418,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0,
          "displayValue": "11.7 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 11.7 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": 0.06,
          "displayValue": "11.1 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- Current value: 11.1 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": 0,
          "displayValue": "Est savings of 534 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- Current value: Est savings of 534 KiB\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 1,167 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 1,167 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 9,200 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 9,200 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": 0,
          "displayValue": "Est savings of 1,283 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- Current value: Est savings of 1,283 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 124 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 124 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 7 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- Current value: Est savings of 7 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 104 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- Current value: Est savings of 104 KiB\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://administracion.gob.es/pag_Home/gl/Tu-espacio-europeo/derechos-obligaciones/empresas/financiacion/nacional/info-general",
      "status": "ok",
      "finalUrl": "https://administracion.gob.es/pag_Home/gl/Tu-espacio-europeo/derechos-obligaciones/empresas/financiacion/nacional/info-general",
      "performanceScore": 0.55,
      "bestPracticesScore": 0.79,
      "transferBytes": 2202937,
      "co2Grams": 0.8439041900718001,
      "greenWeb": {
        "page": {
          "hostname": "administracion.gob.es",
          "checked": true,
          "status": "not-green",
          "green": false,
          "hostedBy": null,
          "hostedByWebsite": null,
          "listedProvider": null,
          "partner": null,
          "modified": "2026-03-29T13:38:28.588564",
          "supportingDocuments": [],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/administracion.gob.es",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290051,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "not-green",
          "externalOriginCount": 1,
          "greenCount": 1,
          "notGreenCount": 1,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 70,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/buscador/buscadorsimple.htm|input|text|q|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "q",
            "formContext": "form|get|/buscador/buscadorsimple.htm",
            "hasLabel": false,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 70,
              "urgency": "high",
              "issues": [
                "Missing associated label",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add a programmatic label using <label>, aria-label, or aria-labelledby.",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "Missing associated label",
            "urgency": "high",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 25,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": true,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": false,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Acceso a financiación nacional - Financiación nacional - Financiación - Empresas - Tus derechos y obligaciones en la UE - Tu espacio europeo - Punto de Acceso General",
          "lang": "gl",
          "charset": "",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Conoce las iniciativas, el buscador de ayudas y subvenciones y los programas convocados para el acceso a la financiación nacional a empresas",
          "robots": "all",
          "canonical": "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/empresas/financiacion/nacional/info-general",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 38,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 38,
          "tabletSmallTapTargets": 69,
          "fixedWidthOffenders": 4,
          "oversizedMedia": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 399,
            "viewportHeight": 864,
            "contentWidth": 399,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 2,
            "smallTapTargets": 38,
            "oversizedMedia": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 829,
            "viewportHeight": 1193,
            "contentWidth": 829,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 2,
            "smallTapTargets": 69,
            "oversizedMedia": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 38 small targets on mobile and 69 on tablet."
          },
          {
            "title": "Refactor fixed-width components",
            "urgency": "medium",
            "detail": "4 element(s) exceeded viewport width in tested layouts; use responsive component constraints."
          }
        ]
      },
      "securityLight": {
        "score": 31,
        "urgency": "medium",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": false,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "connection": "Keep-Alive",
            "content-encoding": "gzip",
            "content-type": "text/html;charset=UTF-8",
            "date": "Mon, 30 Mar 2026 00:34:46 GMT",
            "keep-alive": "timeout=15, max=500",
            "referrer-policy": "origin-when-cross-origin,strict-origin-when-cross-origin",
            "server": "Microsoft-IIS/5.0",
            "set-cookie": "VISITOR=returning; Path=/pag_Home/gl/Tu-espacio-europeo/derechos-obligaciones/empresas; HttpOnly; Secure; SameSite=None\nTS01a8e1d0=01d9c3d318c24c88957b17cbd4a9c3de570506b8934bb5d2e1fe59469b2f1fdc4fc32679c776248f1624bb318aeee90fc88a90be85ae08dbfdacd7f62ac5b13f1916da055976a59f1ec366dac973582501aa40ca32; Path=/; HttpOnly; Secure; SameSite=None\nTS013efc47=01d9c3d318e30d71c8f2baaadc7a422b508ec8f1b51a950e85b01dc930419b68c9a1e8639e95ff7a154a24dc16c6430f061b90f0ea52fcc5b3e1b8ca06f6cbb2c8c1d7490c1d9f388aaa462aa361eb925e482f499148a2e0fb86903edf66edba02ee20c5cf; path=/pag_Home/gl/Tu-espacio-europeo/derechos-obligaciones/empresas; HttpOnly; Secure; SameSite=None",
            "strict-transport-security": "max-age=63072000; preload",
            "transfer-encoding": "chunked",
            "vary": "Accept-Encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1;mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add a Content-Security-Policy header",
            "urgency": "high",
            "detail": "Add an appropriate CSP to reduce script injection and resource loading risk."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 30,
        "urgency": "medium",
        "origin": "https://administracion.gob.es",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://administracion.gob.es/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/favicon.ico",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 2403496.2,
        "checks": {
          "hasEffectiveTextCompression": false
        },
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "estimatedSavingsBytes": 1313541,
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "estimatedSavingsBytes": 891965,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "estimatedSavingsBytes": 126680.2,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "estimatedSavingsBytes": 63759,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "estimatedSavingsBytes": 7551,
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings."
          }
        ],
        "recommendations": [
          {
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
          },
          {
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
          },
          {
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 7.37 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 4253255.2,
        "totalEstimatedBlockingMs": 9526,
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable text compression",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat.",
            "estimatedSavingsBytes": 1313541,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,283 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-text-compression"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 1195888,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,168 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 891965,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 871 KiB",
            "urgency": "high",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unused-javascript",
            "title": "Remove unused JavaScript",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code.",
            "estimatedSavingsBytes": 546318,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 534 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-javascript"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9526,
            "displayValue": "Est savings of 9,530 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 126680.2,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 124 KiB",
            "urgency": "medium",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "offscreen-images",
            "title": "Lazy-load offscreen images",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed.",
            "estimatedSavingsBytes": 100841,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 98 KiB",
            "urgency": "medium",
            "sourceAuditId": "offscreen-images"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 63759,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 62 KiB",
            "urgency": "medium",
            "sourceAuditId": "unminified-javascript"
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss.",
            "estimatedSavingsBytes": 7551,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-optimized-images"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 6712,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-responsive-images"
          }
        ],
        "recommendations": [
          {
            "title": "Enable text compression",
            "urgency": "high",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat. Estimated byte savings: 1.25 MB."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "high",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 1.14 MB."
          },
          {
            "title": "Minify CSS",
            "urgency": "high",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 871.06 KB."
          },
          {
            "title": "Remove unused JavaScript",
            "urgency": "high",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code. Estimated byte savings: 533.51 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 9526 ms."
          },
          {
            "title": "Serve images in next-gen formats",
            "urgency": "medium",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 123.71 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1895510
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.81 MB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.81 MB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 30,
        "urgency": "high",
        "transferBytes": 2202937,
        "css": {
          "unusedBytes": 1195888,
          "ratio": 0.5428607354636106,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 546318,
          "duplicatedBytes": 0,
          "ratio": 0.2479952899243147,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "high",
            "estimatedSavingsBytes": 1195888,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          },
          {
            "area": "javascript",
            "title": "Remove unused JavaScript and feature bundles",
            "urgency": "high",
            "estimatedSavingsBytes": 546318,
            "strategy": "Drop unused packages and feature code, or move them behind route-level or interaction-triggered imports.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 35,
        "urgency": "high",
        "transferBytes": 2202937,
        "estimatedDeferrableBytes": 1843047,
        "renderBlockingMs": 9526,
        "breakdown": {
          "offscreenImageSavings": 100841,
          "unusedJavascriptSavings": 546318,
          "unusedCssSavings": 1195888
        },
        "candidates": [
          {
            "title": "Lazy-load offscreen images",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 100841,
            "strategy": "Load below-the-fold images only when they approach the viewport.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Defer non-critical JavaScript",
            "area": "javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 546318,
            "strategy": "Split bundles and load feature code on interaction or route transition.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1195888,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9526,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy stylesheet from administracion.gob.es",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from administracion.gob.es",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 254418,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from administracion.gob.es",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.googletagmanager.com",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 145372,
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 34,
        "urgency": "medium",
        "providerCount": 1,
        "requestCount": 2,
        "transferBytes": 290051,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290051,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "medium",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "medium",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          }
        ]
      },
      "redundancy": {
        "score": 68,
        "urgency": "high",
        "transferBytes": 2202937,
        "estimatedRedundantBytes": 1742206,
        "redundancyRatio": 0.7908560253879253,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 1195888,
            "displayValue": "Est savings of 1,168 KiB"
          },
          {
            "auditId": "unused-javascript",
            "title": "Reduce unused JavaScript",
            "savingsBytes": 546318,
            "displayValue": "Est savings of 534 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "high",
            "estimatedSavingsBytes": 1195888,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce unused javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 546318,
            "auditId": "unused-javascript",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Enable and verify text compression",
            "urgency": "medium",
            "estimatedSavingsBytes": 1313541,
            "auditId": "uses-text-compression",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 47,
        "urgency": "high",
        "totalTransferBytes": 2202937,
        "heavyRequestCount": 6,
        "heavyBytes": 1925269,
        "heavyRatio": 0.8739555420785978,
        "heavyRequests": [
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "transferSize": 1177193,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "transferSize": 254418,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "transferSize": 159823,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "transferSize": 145372,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-4YNNM3J1E0&cx=c&gtm=4e63p1",
            "transferSize": 144679,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/libs/jquery.mCustomScrollbar.css",
            "transferSize": 43784,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 1220977
          },
          {
            "resourceType": "script",
            "count": 3,
            "transferBytes": 544469
          },
          {
            "resourceType": "image",
            "count": 1,
            "transferBytes": 159823
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "administracion.gob.es",
            "count": 4,
            "transferBytes": 1635218
          },
          {
            "domain": "www.googletagmanager.com",
            "count": 2,
            "transferBytes": 290051
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Lazy-load offscreen images and media galleries",
            "urgency": "medium",
            "estimatedSavingsBytes": 100841,
            "strategy": "Load imagery only when it enters the viewport or when a user opens the relevant section.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Split JavaScript by route or interaction",
            "urgency": "high",
            "estimatedSavingsBytes": 546318,
            "strategy": "Move non-critical bundles behind route-level or event-driven imports so they are only fetched on demand.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy stylesheet asset from administracion.gob.es",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "strategy": "Split this stylesheet so component-specific CSS is delivered only when the component is rendered.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 254418,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0,
          "displayValue": "12.2 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 12.2 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": 0.04,
          "displayValue": "11.7 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- Current value: 11.7 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": 0,
          "displayValue": "Est savings of 534 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- Current value: Est savings of 534 KiB\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 1,168 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 1,168 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 9,530 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 9,530 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": 0,
          "displayValue": "Est savings of 1,283 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- Current value: Est savings of 1,283 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 124 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 124 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 7 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- Current value: Est savings of 7 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 98 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- Current value: Est savings of 98 KiB\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://administracion.gob.es/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/trabajo-jubilacion/condiciones-trabajo/prestaciones-desempleo",
      "status": "ok",
      "finalUrl": "https://administracion.gob.es/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/trabajo-jubilacion/condiciones-trabajo/prestaciones-desempleo",
      "performanceScore": 0.56,
      "bestPracticesScore": 0.79,
      "transferBytes": 2256587,
      "co2Grams": 0.8644565071818,
      "greenWeb": {
        "page": {
          "hostname": "administracion.gob.es",
          "checked": true,
          "status": "not-green",
          "green": false,
          "hostedBy": null,
          "hostedByWebsite": null,
          "listedProvider": null,
          "partner": null,
          "modified": "2026-03-29T13:38:28.588564",
          "supportingDocuments": [],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/administracion.gob.es",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290261,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "not-green",
          "externalOriginCount": 1,
          "greenCount": 1,
          "notGreenCount": 1,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 70,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/buscador/buscadorsimple.htm|input|text|q|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "q",
            "formContext": "form|get|/buscador/buscadorsimple.htm",
            "hasLabel": false,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 70,
              "urgency": "high",
              "issues": [
                "Missing associated label",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add a programmatic label using <label>, aria-label, or aria-labelledby.",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "Missing associated label",
            "urgency": "high",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 25,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": true,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": false,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Prestaciones por desempleo - Condiciones de trabajo, incluyendo trabajadores desplazados - Trabajo y jubilación - Ciudadanos - Tus derechos y obligaciones en la UE - Tu espacio europeo - Punto de Acceso General",
          "lang": "eu",
          "charset": "",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Conoce la protección por desempleo y la prestación contributiva por desempleo",
          "robots": "all",
          "canonical": "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/trabajo-jubilacion/condiciones-trabajo/prestaciones-desempleo",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 53,
          "tabletSmallTapTargets": 85,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 399,
            "viewportHeight": 864,
            "contentWidth": 399,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 53,
            "oversizedMedia": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 829,
            "viewportHeight": 1193,
            "contentWidth": 829,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 85,
            "oversizedMedia": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 53 small targets on mobile and 85 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 31,
        "urgency": "medium",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": false,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "connection": "Keep-Alive",
            "content-encoding": "gzip",
            "content-type": "text/html;charset=UTF-8",
            "date": "Mon, 30 Mar 2026 00:35:09 GMT",
            "keep-alive": "timeout=15, max=500",
            "referrer-policy": "origin-when-cross-origin,strict-origin-when-cross-origin",
            "server": "Microsoft-IIS/5.0",
            "set-cookie": "VISITOR=returning; Path=/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/ciudadanos; HttpOnly; Secure; SameSite=None\nTS01a8e1d0=01d9c3d318c24c88957b17cbd4a9c3de570506b8934bb5d2e1fe59469b2f1fdc4fc32679c776248f1624bb318aeee90fc88a90be85ae08dbfdacd7f62ac5b13f1916da055976a59f1ec366dac973582501aa40ca32; Path=/; HttpOnly; Secure; SameSite=None\nTS011d349b=01d9c3d3183d0ab5e35f0a4d3b0e06f02e6973180380529b1b9ba56384d07a19b66567890ae44783a444bdd5d48d6a967bacc4b9ad4bff902aea9909935fb9326af3d6d004f98a4d48eaff3a52021502918d296d1fe81761193e34385adc30c5a064c0078b; path=/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/ciudadanos; HttpOnly; Secure; SameSite=None",
            "strict-transport-security": "max-age=63072000; preload",
            "transfer-encoding": "chunked",
            "vary": "Accept-Encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1;mode=block",
            "traceresponse": "00-eafec45a4df67ed0c1aa222bc5974e47-18e040fb90158065-01",
            "x-dt-tracestate": "acd5d8fe-344161ca@dt"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add a Content-Security-Policy header",
            "urgency": "high",
            "detail": "Add an appropriate CSP to reduce script injection and resource loading risk."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 30,
        "urgency": "medium",
        "origin": "https://administracion.gob.es",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://administracion.gob.es/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/favicon.ico",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 2403496.2,
        "checks": {
          "hasEffectiveTextCompression": false
        },
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "estimatedSavingsBytes": 1313541,
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "estimatedSavingsBytes": 891965,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "estimatedSavingsBytes": 126680.2,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "estimatedSavingsBytes": 63759,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "estimatedSavingsBytes": 7551,
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings."
          }
        ],
        "recommendations": [
          {
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
          },
          {
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
          },
          {
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 7.37 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 4285993.2,
        "totalEstimatedBlockingMs": 9276,
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable text compression",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat.",
            "estimatedSavingsBytes": 1313541,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,283 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-text-compression"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 1194956,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,167 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 891965,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 871 KiB",
            "urgency": "high",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unused-javascript",
            "title": "Remove unused JavaScript",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code.",
            "estimatedSavingsBytes": 546493,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 534 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-javascript"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9276,
            "displayValue": "Est savings of 9,280 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "offscreen-images",
            "title": "Lazy-load offscreen images",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed.",
            "estimatedSavingsBytes": 134336,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 131 KiB",
            "urgency": "medium",
            "sourceAuditId": "offscreen-images"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 126680.2,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 124 KiB",
            "urgency": "medium",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 63759,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 62 KiB",
            "urgency": "medium",
            "sourceAuditId": "unminified-javascript"
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss.",
            "estimatedSavingsBytes": 7551,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-optimized-images"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 6712,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-responsive-images"
          }
        ],
        "recommendations": [
          {
            "title": "Enable text compression",
            "urgency": "high",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat. Estimated byte savings: 1.25 MB."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "high",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 1.14 MB."
          },
          {
            "title": "Minify CSS",
            "urgency": "high",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 871.06 KB."
          },
          {
            "title": "Remove unused JavaScript",
            "urgency": "high",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code. Estimated byte savings: 533.68 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 9276 ms."
          },
          {
            "title": "Lazy-load offscreen images",
            "urgency": "medium",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed. Estimated byte savings: 131.19 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1945165
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.86 MB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.86 MB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 29,
        "urgency": "high",
        "transferBytes": 2256587,
        "css": {
          "unusedBytes": 1194956,
          "ratio": 0.5295412939984144,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 546493,
          "duplicatedBytes": 0,
          "ratio": 0.2421767917656177,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "high",
            "estimatedSavingsBytes": 1194956,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          },
          {
            "area": "javascript",
            "title": "Remove unused JavaScript and feature bundles",
            "urgency": "high",
            "estimatedSavingsBytes": 546493,
            "strategy": "Drop unused packages and feature code, or move them behind route-level or interaction-triggered imports.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 35,
        "urgency": "high",
        "transferBytes": 2256587,
        "estimatedDeferrableBytes": 1875785,
        "renderBlockingMs": 9276,
        "breakdown": {
          "offscreenImageSavings": 134336,
          "unusedJavascriptSavings": 546493,
          "unusedCssSavings": 1194956
        },
        "candidates": [
          {
            "title": "Lazy-load offscreen images",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 134336,
            "strategy": "Load below-the-fold images only when they approach the viewport.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Defer non-critical JavaScript",
            "area": "javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 546493,
            "strategy": "Split bundles and load feature code on interaction or route transition.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1194956,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9276,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy stylesheet from administracion.gob.es",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from administracion.gob.es",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 254418,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from administracion.gob.es",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.googletagmanager.com",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 145483,
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 34,
        "urgency": "medium",
        "providerCount": 1,
        "requestCount": 2,
        "transferBytes": 290261,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290261,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "medium",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "medium",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          }
        ]
      },
      "redundancy": {
        "score": 67,
        "urgency": "high",
        "transferBytes": 2256587,
        "estimatedRedundantBytes": 1741449,
        "redundancyRatio": 0.7717180857640321,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 1194956,
            "displayValue": "Est savings of 1,167 KiB"
          },
          {
            "auditId": "unused-javascript",
            "title": "Reduce unused JavaScript",
            "savingsBytes": 546493,
            "displayValue": "Est savings of 534 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "high",
            "estimatedSavingsBytes": 1194956,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce unused javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 546493,
            "auditId": "unused-javascript",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Enable and verify text compression",
            "urgency": "medium",
            "estimatedSavingsBytes": 1313541,
            "auditId": "uses-text-compression",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 46,
        "urgency": "high",
        "totalTransferBytes": 2256587,
        "heavyRequestCount": 6,
        "heavyBytes": 1925479,
        "heavyRatio": 0.8532704478045827,
        "heavyRequests": [
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "transferSize": 1177193,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "transferSize": 254418,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "transferSize": 159823,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "transferSize": 145483,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-4YNNM3J1E0&cx=c&gtm=4e63q0h2",
            "transferSize": 144778,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/libs/jquery.mCustomScrollbar.css",
            "transferSize": 43784,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 1220977
          },
          {
            "resourceType": "script",
            "count": 3,
            "transferBytes": 544679
          },
          {
            "resourceType": "image",
            "count": 1,
            "transferBytes": 159823
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "administracion.gob.es",
            "count": 4,
            "transferBytes": 1635218
          },
          {
            "domain": "www.googletagmanager.com",
            "count": 2,
            "transferBytes": 290261
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Lazy-load offscreen images and media galleries",
            "urgency": "high",
            "estimatedSavingsBytes": 134336,
            "strategy": "Load imagery only when it enters the viewport or when a user opens the relevant section.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Split JavaScript by route or interaction",
            "urgency": "high",
            "estimatedSavingsBytes": 546493,
            "strategy": "Move non-critical bundles behind route-level or event-driven imports so they are only fetched on demand.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy stylesheet asset from administracion.gob.es",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "strategy": "Split this stylesheet so component-specific CSS is delivered only when the component is rendered.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 254418,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0,
          "displayValue": "12.9 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 12.9 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": 0.05,
          "displayValue": "11.5 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- Current value: 11.5 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": 0,
          "displayValue": "Est savings of 534 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- Current value: Est savings of 534 KiB\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 1,167 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 1,167 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 9,280 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 9,280 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": 0,
          "displayValue": "Est savings of 1,283 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- Current value: Est savings of 1,283 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 124 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 124 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 7 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- Current value: Est savings of 7 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 131 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- Current value: Est savings of 131 KiB\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://administracion.gob.es/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/residencia/obtencion-residencia/info-general",
      "status": "ok",
      "finalUrl": "https://administracion.gob.es/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/residencia/obtencion-residencia/info-general",
      "performanceScore": 0.55,
      "bestPracticesScore": 0.79,
      "transferBytes": 2210300,
      "co2Grams": 0.8467248184200001,
      "greenWeb": {
        "page": {
          "hostname": "administracion.gob.es",
          "checked": true,
          "status": "not-green",
          "green": false,
          "hostedBy": null,
          "hostedByWebsite": null,
          "listedProvider": null,
          "partner": null,
          "modified": "2026-03-29T13:38:28.588564",
          "supportingDocuments": [],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/administracion.gob.es",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290063,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "not-green",
          "externalOriginCount": 1,
          "greenCount": 1,
          "notGreenCount": 1,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 70,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/buscador/buscadorsimple.htm|input|text|q|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "q",
            "formContext": "form|get|/buscador/buscadorsimple.htm",
            "hasLabel": false,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 70,
              "urgency": "high",
              "issues": [
                "Missing associated label",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add a programmatic label using <label>, aria-label, or aria-labelledby.",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "Missing associated label",
            "urgency": "high",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 35,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": false,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Residence - Acquiring residence - Residence - Citizens - Your rights and obligations in the EU - Tu espacio europeo - Punto de Acceso General",
          "lang": "en",
          "charset": "",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Right of residence of EU citizens and members of their families, and cases in which worker status is retained.",
          "robots": "all",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 32,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 40,
          "tabletSmallTapTargets": 66,
          "fixedWidthOffenders": 1,
          "oversizedMedia": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 399,
            "viewportHeight": 864,
            "contentWidth": 399,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 1,
            "smallTapTargets": 40,
            "oversizedMedia": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 829,
            "viewportHeight": 1193,
            "contentWidth": 829,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 66,
            "oversizedMedia": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 40 small targets on mobile and 66 on tablet."
          },
          {
            "title": "Refactor fixed-width components",
            "urgency": "medium",
            "detail": "1 element(s) exceeded viewport width in tested layouts; use responsive component constraints."
          }
        ]
      },
      "securityLight": {
        "score": 33,
        "urgency": "medium",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": false,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 2,
          "externalScriptsWithoutIntegrity": 2,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "connection": "Keep-Alive",
            "content-encoding": "gzip",
            "content-type": "text/html;charset=UTF-8",
            "date": "Mon, 30 Mar 2026 00:35:33 GMT",
            "keep-alive": "timeout=15, max=500",
            "referrer-policy": "origin-when-cross-origin,strict-origin-when-cross-origin",
            "server": "Microsoft-IIS/5.0",
            "set-cookie": "VISITOR=returning; Path=/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/ciudadanos; HttpOnly; Secure; SameSite=None\nTS01a8e1d0=01d9c3d318a8df60fb78bd16dbecd479f3574b53af6307f3292d4b0537431a42ad8b1305344a33bb9d19322e073c125f3da6a1aa230810e74a9b77ed3f2d939eabdc5aec9e207a068392e4d311a36d140afac2ba85; Path=/; HttpOnly; Secure; SameSite=None\nTS01cc21ed=01d9c3d31875eb4ee065abf109a5ef141663ea9e5662999d88da62791f603954b0657e3ad206abe0e840a1f31af532847905d0382b90b7a84781f287b0f8ea376c270e95758790e5f992ab8a462f1118463bf9b8565956db104bfe20987b3f54c98e7c3998; path=/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/ciudadanos; HttpOnly; Secure; SameSite=None",
            "strict-transport-security": "max-age=63072000; preload",
            "transfer-encoding": "chunked",
            "vary": "Accept-Encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1;mode=block",
            "traceresponse": "00-6d2ee060816876e9a5447a7c3ff94388-04cb81a46699792f-01",
            "x-dt-tracestate": "acd5d8fe-344161ca@dt"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add a Content-Security-Policy header",
            "urgency": "high",
            "detail": "Add an appropriate CSP to reduce script injection and resource loading risk."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "2 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 30,
        "urgency": "medium",
        "origin": "https://administracion.gob.es",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://administracion.gob.es/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/favicon.ico",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 2403496.2,
        "checks": {
          "hasEffectiveTextCompression": false
        },
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "estimatedSavingsBytes": 1313541,
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "estimatedSavingsBytes": 891965,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "estimatedSavingsBytes": 126680.2,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "estimatedSavingsBytes": 63759,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "estimatedSavingsBytes": 7551,
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings."
          }
        ],
        "recommendations": [
          {
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
          },
          {
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
          },
          {
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 7.37 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 4255789.2,
        "totalEstimatedBlockingMs": 9149,
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable text compression",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat.",
            "estimatedSavingsBytes": 1313541,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,283 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-text-compression"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 1195646,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,168 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 891965,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 871 KiB",
            "urgency": "high",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unused-javascript",
            "title": "Remove unused JavaScript",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code.",
            "estimatedSavingsBytes": 545742,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 533 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-javascript"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9149,
            "displayValue": "Est savings of 9,150 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 126680.2,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 124 KiB",
            "urgency": "medium",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "offscreen-images",
            "title": "Lazy-load offscreen images",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed.",
            "estimatedSavingsBytes": 104193,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 102 KiB",
            "urgency": "medium",
            "sourceAuditId": "offscreen-images"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 63759,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 62 KiB",
            "urgency": "medium",
            "sourceAuditId": "unminified-javascript"
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss.",
            "estimatedSavingsBytes": 7551,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-optimized-images"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 6712,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-responsive-images"
          }
        ],
        "recommendations": [
          {
            "title": "Enable text compression",
            "urgency": "high",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat. Estimated byte savings: 1.25 MB."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "high",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 1.14 MB."
          },
          {
            "title": "Minify CSS",
            "urgency": "high",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 871.06 KB."
          },
          {
            "title": "Remove unused JavaScript",
            "urgency": "high",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code. Estimated byte savings: 532.95 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 9149 ms."
          },
          {
            "title": "Serve images in next-gen formats",
            "urgency": "medium",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 123.71 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 4,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 2,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "2 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1901713
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.81 MB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.81 MB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 30,
        "urgency": "high",
        "transferBytes": 2210300,
        "css": {
          "unusedBytes": 1195646,
          "ratio": 0.5409428584355065,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 545742,
          "duplicatedBytes": 0,
          "ratio": 0.24690856444826495,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "high",
            "estimatedSavingsBytes": 1195646,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          },
          {
            "area": "javascript",
            "title": "Remove unused JavaScript and feature bundles",
            "urgency": "high",
            "estimatedSavingsBytes": 545742,
            "strategy": "Drop unused packages and feature code, or move them behind route-level or interaction-triggered imports.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 35,
        "urgency": "high",
        "transferBytes": 2210300,
        "estimatedDeferrableBytes": 1845581,
        "renderBlockingMs": 9149,
        "breakdown": {
          "offscreenImageSavings": 104193,
          "unusedJavascriptSavings": 545742,
          "unusedCssSavings": 1195646
        },
        "candidates": [
          {
            "title": "Lazy-load offscreen images",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 104193,
            "strategy": "Load below-the-fold images only when they approach the viewport.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Defer non-critical JavaScript",
            "area": "javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 545742,
            "strategy": "Split bundles and load feature code on interaction or route transition.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1195646,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9149,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy stylesheet from administracion.gob.es",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from administracion.gob.es",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 254411,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from administracion.gob.es",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.googletagmanager.com",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 145378,
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 34,
        "urgency": "medium",
        "providerCount": 1,
        "requestCount": 2,
        "transferBytes": 290063,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290063,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "medium",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "medium",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          }
        ]
      },
      "redundancy": {
        "score": 68,
        "urgency": "high",
        "transferBytes": 2210300,
        "estimatedRedundantBytes": 1741388,
        "redundancyRatio": 0.7878514228837714,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 1195646,
            "displayValue": "Est savings of 1,168 KiB"
          },
          {
            "auditId": "unused-javascript",
            "title": "Reduce unused JavaScript",
            "savingsBytes": 545742,
            "displayValue": "Est savings of 533 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "high",
            "estimatedSavingsBytes": 1195646,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce unused javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 545742,
            "auditId": "unused-javascript",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Enable and verify text compression",
            "urgency": "medium",
            "estimatedSavingsBytes": 1313541,
            "auditId": "uses-text-compression",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 47,
        "urgency": "high",
        "totalTransferBytes": 2210300,
        "heavyRequestCount": 6,
        "heavyBytes": 1925274,
        "heavyRatio": 0.8710464642808669,
        "heavyRequests": [
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "transferSize": 1177193,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "transferSize": 254411,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "transferSize": 159823,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "transferSize": 145378,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-4YNNM3J1E0&cx=c&gtm=4e63p1",
            "transferSize": 144685,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/libs/jquery.mCustomScrollbar.css",
            "transferSize": 43784,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 1220977
          },
          {
            "resourceType": "script",
            "count": 3,
            "transferBytes": 544474
          },
          {
            "resourceType": "image",
            "count": 1,
            "transferBytes": 159823
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "administracion.gob.es",
            "count": 4,
            "transferBytes": 1635211
          },
          {
            "domain": "www.googletagmanager.com",
            "count": 2,
            "transferBytes": 290063
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Lazy-load offscreen images and media galleries",
            "urgency": "medium",
            "estimatedSavingsBytes": 104193,
            "strategy": "Load imagery only when it enters the viewport or when a user opens the relevant section.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Split JavaScript by route or interaction",
            "urgency": "high",
            "estimatedSavingsBytes": 545742,
            "strategy": "Move non-critical bundles behind route-level or event-driven imports so they are only fetched on demand.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy stylesheet asset from administracion.gob.es",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "strategy": "Split this stylesheet so component-specific CSS is delivered only when the component is rendered.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 254411,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0,
          "displayValue": "12.4 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 12.4 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": 0.02,
          "displayValue": "13.5 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- Current value: 13.5 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": 0,
          "displayValue": "Est savings of 533 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- Current value: Est savings of 533 KiB\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 1,168 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 1,168 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 9,150 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 9,150 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": 0,
          "displayValue": "Est savings of 1,283 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- Current value: Est savings of 1,283 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 124 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 124 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 7 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- Current value: Est savings of 7 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 102 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- Current value: Est savings of 102 KiB\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://administracion.gob.es/pag_Home/gl/Tu-espacio-europeo/derechos-obligaciones/empresas/inicio-gestion-cierre/derechos/patentes-marcas/diseno-industrial",
      "status": "ok",
      "finalUrl": "https://administracion.gob.es/pag_Home/gl/Tu-espacio-europeo/derechos-obligaciones/empresas/inicio-gestion-cierre/derechos/patentes-marcas/diseno-industrial",
      "performanceScore": 0.56,
      "bestPracticesScore": 0.79,
      "transferBytes": 2214763,
      "co2Grams": 0.8484345107082001,
      "greenWeb": {
        "page": {
          "hostname": "administracion.gob.es",
          "checked": true,
          "status": "not-green",
          "green": false,
          "hostedBy": null,
          "hostedByWebsite": null,
          "listedProvider": null,
          "partner": null,
          "modified": "2026-03-29T13:38:28.588564",
          "supportingDocuments": [],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/administracion.gob.es",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290070,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "not-green",
          "externalOriginCount": 1,
          "greenCount": 1,
          "notGreenCount": 1,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 70,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/buscador/buscadorsimple.htm|input|text|q|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "q",
            "formContext": "form|get|/buscador/buscadorsimple.htm",
            "hasLabel": false,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 70,
              "urgency": "high",
              "issues": [
                "Missing associated label",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add a programmatic label using <label>, aria-label, or aria-labelledby.",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "Missing associated label",
            "urgency": "high",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 25,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": true,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": false,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Protección de Diseños Industriales - Patentes y marcas - Derechos de propiedad industrial e intelectual - Puesta en marcha, gestión y cierre de una empresa - Empresas - Tus derechos y obligaciones en la UE - Tu espacio europeo - Punto de Acceso General",
          "lang": "gl",
          "charset": "",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Conoce qué es y que puede protegerse con un Diseño Industrial, requisitos, cuánto cuesta y como registrarlo, duración de la protección y dónde tiene validez",
          "robots": "all",
          "canonical": "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/empresas/inicio-gestion-cierre/derechos/patentes-marcas/diseno-industrial",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 32,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 56,
          "tabletSmallTapTargets": 94,
          "fixedWidthOffenders": 1,
          "oversizedMedia": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 399,
            "viewportHeight": 864,
            "contentWidth": 399,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 1,
            "smallTapTargets": 56,
            "oversizedMedia": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 829,
            "viewportHeight": 1193,
            "contentWidth": 829,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 94,
            "oversizedMedia": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 56 small targets on mobile and 94 on tablet."
          },
          {
            "title": "Refactor fixed-width components",
            "urgency": "medium",
            "detail": "1 element(s) exceeded viewport width in tested layouts; use responsive component constraints."
          }
        ]
      },
      "securityLight": {
        "score": 31,
        "urgency": "medium",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": false,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "connection": "Keep-Alive",
            "content-encoding": "gzip",
            "content-type": "text/html;charset=UTF-8",
            "date": "Mon, 30 Mar 2026 00:35:55 GMT",
            "keep-alive": "timeout=15, max=500",
            "referrer-policy": "origin-when-cross-origin,strict-origin-when-cross-origin",
            "server": "Microsoft-IIS/5.0",
            "set-cookie": "VISITOR=returning; Path=/pag_Home/gl/Tu-espacio-europeo/derechos-obligaciones/empresas; HttpOnly; Secure; SameSite=None\nTS01a8e1d0=01d9c3d318a8df60fb78bd16dbecd479f3574b53af6307f3292d4b0537431a42ad8b1305344a33bb9d19322e073c125f3da6a1aa230810e74a9b77ed3f2d939eabdc5aec9e207a068392e4d311a36d140afac2ba85; Path=/; HttpOnly; Secure; SameSite=None\nTS013efc47=01d9c3d318e30d71c8f2baaadc7a422b508ec8f1b51a950e85b01dc930419b68c9a1e8639e95ff7a154a24dc16c6430f061b90f0ea52fcc5b3e1b8ca06f6cbb2c8c1d7490c1d9f388aaa462aa361eb925e482f499148a2e0fb86903edf66edba02ee20c5cf; path=/pag_Home/gl/Tu-espacio-europeo/derechos-obligaciones/empresas; HttpOnly; Secure; SameSite=None",
            "strict-transport-security": "max-age=63072000; preload",
            "transfer-encoding": "chunked",
            "vary": "Accept-Encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1;mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add a Content-Security-Policy header",
            "urgency": "high",
            "detail": "Add an appropriate CSP to reduce script injection and resource loading risk."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 30,
        "urgency": "medium",
        "origin": "https://administracion.gob.es",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://administracion.gob.es/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/favicon.ico",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 2403496.2,
        "checks": {
          "hasEffectiveTextCompression": false
        },
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "estimatedSavingsBytes": 1313541,
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "estimatedSavingsBytes": 891965,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "estimatedSavingsBytes": 126680.2,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "estimatedSavingsBytes": 63759,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "estimatedSavingsBytes": 7551,
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings."
          }
        ],
        "recommendations": [
          {
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
          },
          {
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
          },
          {
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 7.37 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 4257336.2,
        "totalEstimatedBlockingMs": 9255,
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable text compression",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat.",
            "estimatedSavingsBytes": 1313541,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,283 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-text-compression"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 1195560,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,168 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 891965,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 871 KiB",
            "urgency": "high",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unused-javascript",
            "title": "Remove unused JavaScript",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code.",
            "estimatedSavingsBytes": 546397,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 534 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-javascript"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9255,
            "displayValue": "Est savings of 9,260 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 126680.2,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 124 KiB",
            "urgency": "medium",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "offscreen-images",
            "title": "Lazy-load offscreen images",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed.",
            "estimatedSavingsBytes": 105171,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 103 KiB",
            "urgency": "medium",
            "sourceAuditId": "offscreen-images"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 63759,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 62 KiB",
            "urgency": "medium",
            "sourceAuditId": "unminified-javascript"
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss.",
            "estimatedSavingsBytes": 7551,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-optimized-images"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 6712,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-responsive-images"
          }
        ],
        "recommendations": [
          {
            "title": "Enable text compression",
            "urgency": "high",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat. Estimated byte savings: 1.25 MB."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "high",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 1.14 MB."
          },
          {
            "title": "Minify CSS",
            "urgency": "high",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 871.06 KB."
          },
          {
            "title": "Remove unused JavaScript",
            "urgency": "high",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code. Estimated byte savings: 533.59 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 9255 ms."
          },
          {
            "title": "Serve images in next-gen formats",
            "urgency": "medium",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 123.71 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1904693
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.82 MB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.82 MB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 30,
        "urgency": "high",
        "transferBytes": 2214763,
        "css": {
          "unusedBytes": 1195560,
          "ratio": 0.5398139665508228,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 546397,
          "duplicatedBytes": 0,
          "ratio": 0.24670675824004645,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "high",
            "estimatedSavingsBytes": 1195560,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          },
          {
            "area": "javascript",
            "title": "Remove unused JavaScript and feature bundles",
            "urgency": "high",
            "estimatedSavingsBytes": 546397,
            "strategy": "Drop unused packages and feature code, or move them behind route-level or interaction-triggered imports.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 35,
        "urgency": "high",
        "transferBytes": 2214763,
        "estimatedDeferrableBytes": 1847128,
        "renderBlockingMs": 9255,
        "breakdown": {
          "offscreenImageSavings": 105171,
          "unusedJavascriptSavings": 546397,
          "unusedCssSavings": 1195560
        },
        "candidates": [
          {
            "title": "Lazy-load offscreen images",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 105171,
            "strategy": "Load below-the-fold images only when they approach the viewport.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Defer non-critical JavaScript",
            "area": "javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 546397,
            "strategy": "Split bundles and load feature code on interaction or route transition.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1195560,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9255,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy stylesheet from administracion.gob.es",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from administracion.gob.es",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 254418,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from administracion.gob.es",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.googletagmanager.com",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 145383,
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 34,
        "urgency": "medium",
        "providerCount": 1,
        "requestCount": 2,
        "transferBytes": 290070,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290070,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "medium",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "medium",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          }
        ]
      },
      "redundancy": {
        "score": 68,
        "urgency": "high",
        "transferBytes": 2214763,
        "estimatedRedundantBytes": 1741957,
        "redundancyRatio": 0.7865207247908693,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 1195560,
            "displayValue": "Est savings of 1,168 KiB"
          },
          {
            "auditId": "unused-javascript",
            "title": "Reduce unused JavaScript",
            "savingsBytes": 546397,
            "displayValue": "Est savings of 534 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "high",
            "estimatedSavingsBytes": 1195560,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce unused javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 546397,
            "auditId": "unused-javascript",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Enable and verify text compression",
            "urgency": "medium",
            "estimatedSavingsBytes": 1313541,
            "auditId": "uses-text-compression",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 47,
        "urgency": "high",
        "totalTransferBytes": 2214763,
        "heavyRequestCount": 6,
        "heavyBytes": 1925288,
        "heavyRatio": 0.8692975275458368,
        "heavyRequests": [
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "transferSize": 1177193,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "transferSize": 254418,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "transferSize": 159823,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "transferSize": 145383,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-4YNNM3J1E0&cx=c&gtm=4e63p1",
            "transferSize": 144687,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/libs/jquery.mCustomScrollbar.css",
            "transferSize": 43784,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 1220977
          },
          {
            "resourceType": "script",
            "count": 3,
            "transferBytes": 544488
          },
          {
            "resourceType": "image",
            "count": 1,
            "transferBytes": 159823
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "administracion.gob.es",
            "count": 4,
            "transferBytes": 1635218
          },
          {
            "domain": "www.googletagmanager.com",
            "count": 2,
            "transferBytes": 290070
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Lazy-load offscreen images and media galleries",
            "urgency": "medium",
            "estimatedSavingsBytes": 105171,
            "strategy": "Load imagery only when it enters the viewport or when a user opens the relevant section.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Split JavaScript by route or interaction",
            "urgency": "high",
            "estimatedSavingsBytes": 546397,
            "strategy": "Move non-critical bundles behind route-level or event-driven imports so they are only fetched on demand.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy stylesheet asset from administracion.gob.es",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "strategy": "Split this stylesheet so component-specific CSS is delivered only when the component is rendered.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 254418,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0,
          "displayValue": "12.3 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 12.3 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": 0.05,
          "displayValue": "11.1 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- Current value: 11.1 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": 0,
          "displayValue": "Est savings of 534 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- Current value: Est savings of 534 KiB\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 1,168 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 1,168 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 9,260 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 9,260 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": 0,
          "displayValue": "Est savings of 1,283 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- Current value: Est savings of 1,283 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 124 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 124 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 7 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- Current value: Est savings of 7 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 103 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- Current value: Est savings of 103 KiB\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://administracion.gob.es/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/empresas/impuestos/especiales/info-general",
      "status": "ok",
      "finalUrl": "https://administracion.gob.es/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/empresas/impuestos/especiales/info-general",
      "performanceScore": 0.55,
      "bestPracticesScore": 0.79,
      "transferBytes": 2205836,
      "co2Grams": 0.8450147430504001,
      "greenWeb": {
        "page": {
          "hostname": "administracion.gob.es",
          "checked": true,
          "status": "not-green",
          "green": false,
          "hostedBy": null,
          "hostedByWebsite": null,
          "listedProvider": null,
          "partner": null,
          "modified": "2026-03-29T13:38:28.588564",
          "supportingDocuments": [],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/administracion.gob.es",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290071,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "not-green",
          "externalOriginCount": 1,
          "greenCount": 1,
          "notGreenCount": 1,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 70,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/buscador/buscadorsimple.htm|input|text|q|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "q",
            "formContext": "form|get|/buscador/buscadorsimple.htm",
            "hasLabel": false,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 70,
              "urgency": "high",
              "issues": [
                "Missing associated label",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add a programmatic label using <label>, aria-label, or aria-labelledby.",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "Missing associated label",
            "urgency": "high",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 35,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": false,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "General Information on Excise Duties - Excise Duties - Taxes - Business - Your rights and obligations in the EU - Tu espacio europeo - Punto de Acceso General",
          "lang": "en",
          "charset": "",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "General information on excise duties and specific information on alcohol and alcoholic beverages, mineral oils, tobacco products, coal and electricity",
          "robots": "all",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 40,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 56,
          "tabletSmallTapTargets": 82,
          "fixedWidthOffenders": 5,
          "oversizedMedia": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 399,
            "viewportHeight": 864,
            "contentWidth": 399,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 5,
            "smallTapTargets": 56,
            "oversizedMedia": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 829,
            "viewportHeight": 1193,
            "contentWidth": 829,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 82,
            "oversizedMedia": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 56 small targets on mobile and 82 on tablet."
          },
          {
            "title": "Refactor fixed-width components",
            "urgency": "medium",
            "detail": "5 element(s) exceeded viewport width in tested layouts; use responsive component constraints."
          }
        ]
      },
      "securityLight": {
        "score": 33,
        "urgency": "medium",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": false,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 2,
          "externalScriptsWithoutIntegrity": 2,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "connection": "Keep-Alive",
            "content-encoding": "gzip",
            "content-type": "text/html;charset=UTF-8",
            "date": "Mon, 30 Mar 2026 00:36:19 GMT",
            "keep-alive": "timeout=15, max=500",
            "referrer-policy": "origin-when-cross-origin,strict-origin-when-cross-origin",
            "server": "Microsoft-IIS/5.0",
            "set-cookie": "VISITOR=returning; Path=/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/empresas; HttpOnly; Secure; SameSite=None\nTS01a8e1d0=01d9c3d318a8df60fb78bd16dbecd479f3574b53af6307f3292d4b0537431a42ad8b1305344a33bb9d19322e073c125f3da6a1aa230810e74a9b77ed3f2d939eabdc5aec9e207a068392e4d311a36d140afac2ba85; Path=/; HttpOnly; Secure; SameSite=None\nTS01e4c404=01d9c3d3183d0ab5e35f0a4d3b0e06f02e6973180380529b1b9ba56384d07a19b66567890ae44783a444bdd5d48d6a967bacc4b9ad4bff902aea9909935fb9326af3d6d004f98a4d48eaff3a52021502918d296d1fe81761193e34385adc30c5a064c0078b; path=/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/empresas; HttpOnly; Secure; SameSite=None",
            "strict-transport-security": "max-age=63072000; preload",
            "transfer-encoding": "chunked",
            "vary": "Accept-Encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1;mode=block",
            "traceresponse": "00-7492e4a4f530798cf5a6bbc411b576ad-c2ee6ec55d66cd4d-01",
            "x-dt-tracestate": "acd5d8fe-344161ca@dt"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add a Content-Security-Policy header",
            "urgency": "high",
            "detail": "Add an appropriate CSP to reduce script injection and resource loading risk."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "2 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 30,
        "urgency": "medium",
        "origin": "https://administracion.gob.es",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://administracion.gob.es/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/favicon.ico",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 2403496.2,
        "checks": {
          "hasEffectiveTextCompression": false
        },
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "estimatedSavingsBytes": 1313541,
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "estimatedSavingsBytes": 891965,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "estimatedSavingsBytes": 126680.2,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "estimatedSavingsBytes": 63759,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "estimatedSavingsBytes": 7551,
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings."
          }
        ],
        "recommendations": [
          {
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
          },
          {
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
          },
          {
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 7.37 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 4250403.2,
        "totalEstimatedBlockingMs": 8921,
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable text compression",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat.",
            "estimatedSavingsBytes": 1313541,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,283 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-text-compression"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 1195721,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,168 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 891965,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 871 KiB",
            "urgency": "high",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unused-javascript",
            "title": "Remove unused JavaScript",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code.",
            "estimatedSavingsBytes": 545848,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 533 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-javascript"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 8921,
            "displayValue": "Est savings of 8,920 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 126680.2,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 124 KiB",
            "urgency": "medium",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "offscreen-images",
            "title": "Lazy-load offscreen images",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed.",
            "estimatedSavingsBytes": 98626,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 96 KiB",
            "urgency": "medium",
            "sourceAuditId": "offscreen-images"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 63759,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 62 KiB",
            "urgency": "medium",
            "sourceAuditId": "unminified-javascript"
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss.",
            "estimatedSavingsBytes": 7551,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-optimized-images"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 6712,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-responsive-images"
          }
        ],
        "recommendations": [
          {
            "title": "Enable text compression",
            "urgency": "high",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat. Estimated byte savings: 1.25 MB."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "high",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 1.14 MB."
          },
          {
            "title": "Minify CSS",
            "urgency": "high",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 871.06 KB."
          },
          {
            "title": "Remove unused JavaScript",
            "urgency": "high",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code. Estimated byte savings: 533.05 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 8921 ms."
          },
          {
            "title": "Serve images in next-gen formats",
            "urgency": "medium",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 123.71 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 4,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 2,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "2 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1896357
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.81 MB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.81 MB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 30,
        "urgency": "high",
        "transferBytes": 2205836,
        "css": {
          "unusedBytes": 1195721,
          "ratio": 0.5420715773974131,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 545848,
          "duplicatedBytes": 0,
          "ratio": 0.24745629321490809,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "high",
            "estimatedSavingsBytes": 1195721,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          },
          {
            "area": "javascript",
            "title": "Remove unused JavaScript and feature bundles",
            "urgency": "high",
            "estimatedSavingsBytes": 545848,
            "strategy": "Drop unused packages and feature code, or move them behind route-level or interaction-triggered imports.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 35,
        "urgency": "high",
        "transferBytes": 2205836,
        "estimatedDeferrableBytes": 1840195,
        "renderBlockingMs": 8921,
        "breakdown": {
          "offscreenImageSavings": 98626,
          "unusedJavascriptSavings": 545848,
          "unusedCssSavings": 1195721
        },
        "candidates": [
          {
            "title": "Lazy-load offscreen images",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 98626,
            "strategy": "Load below-the-fold images only when they approach the viewport.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Defer non-critical JavaScript",
            "area": "javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 545848,
            "strategy": "Split bundles and load feature code on interaction or route transition.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1195721,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 8921,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy stylesheet from administracion.gob.es",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from administracion.gob.es",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 254418,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from administracion.gob.es",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 159817,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.googletagmanager.com",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 145383,
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 34,
        "urgency": "medium",
        "providerCount": 1,
        "requestCount": 2,
        "transferBytes": 290071,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290071,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "medium",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "medium",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          }
        ]
      },
      "redundancy": {
        "score": 66,
        "urgency": "high",
        "transferBytes": 2205836,
        "estimatedRedundantBytes": 1741569,
        "redundancyRatio": 0.7895278706123211,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 1195721,
            "displayValue": "Est savings of 1,168 KiB"
          },
          {
            "auditId": "unused-javascript",
            "title": "Reduce unused JavaScript",
            "savingsBytes": 545848,
            "displayValue": "Est savings of 533 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "high",
            "estimatedSavingsBytes": 1195721,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce unused javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 545848,
            "auditId": "unused-javascript",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Enable and verify text compression",
            "urgency": "medium",
            "estimatedSavingsBytes": 1313541,
            "auditId": "uses-text-compression",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 47,
        "urgency": "high",
        "totalTransferBytes": 2205836,
        "heavyRequestCount": 6,
        "heavyBytes": 1925283,
        "heavyRatio": 0.8728133007168257,
        "heavyRequests": [
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "transferSize": 1177193,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "transferSize": 254418,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "transferSize": 159817,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "transferSize": 145383,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-4YNNM3J1E0&cx=c&gtm=4e63p1",
            "transferSize": 144688,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/libs/jquery.mCustomScrollbar.css",
            "transferSize": 43784,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 1220977
          },
          {
            "resourceType": "script",
            "count": 3,
            "transferBytes": 544489
          },
          {
            "resourceType": "image",
            "count": 1,
            "transferBytes": 159817
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "administracion.gob.es",
            "count": 4,
            "transferBytes": 1635212
          },
          {
            "domain": "www.googletagmanager.com",
            "count": 2,
            "transferBytes": 290071
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Lazy-load offscreen images and media galleries",
            "urgency": "medium",
            "estimatedSavingsBytes": 98626,
            "strategy": "Load imagery only when it enters the viewport or when a user opens the relevant section.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Split JavaScript by route or interaction",
            "urgency": "high",
            "estimatedSavingsBytes": 545848,
            "strategy": "Move non-critical bundles behind route-level or event-driven imports so they are only fetched on demand.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy stylesheet asset from administracion.gob.es",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "strategy": "Split this stylesheet so component-specific CSS is delivered only when the component is rendered.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 254418,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 159817,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0,
          "displayValue": "12.0 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 12.0 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": 0.02,
          "displayValue": "13.3 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- Current value: 13.3 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": 0,
          "displayValue": "Est savings of 533 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- Current value: Est savings of 533 KiB\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 1,168 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 1,168 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 8,920 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 8,920 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": 0,
          "displayValue": "Est savings of 1,283 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- Current value: Est savings of 1,283 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 124 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 124 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 7 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- Current value: Est savings of 7 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 96 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- Current value: Est savings of 96 KiB\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/empresas/empleados/desplazados/laboral",
      "status": "ok",
      "finalUrl": "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/empresas/empleados/desplazados/laboral",
      "performanceScore": 0.55,
      "bestPracticesScore": 0.79,
      "transferBytes": 2216423,
      "co2Grams": 0.8490704258322,
      "greenWeb": {
        "page": {
          "hostname": "administracion.gob.es",
          "checked": true,
          "status": "not-green",
          "green": false,
          "hostedBy": null,
          "hostedByWebsite": null,
          "listedProvider": null,
          "partner": null,
          "modified": "2026-03-29T13:38:28.588564",
          "supportingDocuments": [],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/administracion.gob.es",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290071,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "not-green",
          "externalOriginCount": 1,
          "greenCount": 1,
          "notGreenCount": 1,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 70,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/buscador/buscadorsimple.htm|input|text|q|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "q",
            "formContext": "form|get|/buscador/buscadorsimple.htm",
            "hasLabel": false,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 70,
              "urgency": "high",
              "issues": [
                "Missing associated label",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add a programmatic label using <label>, aria-label, or aria-labelledby.",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "Missing associated label",
            "urgency": "high",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 35,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": false,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Trabajadores desplazados: Laboral - Trabajadores desplazados - Empleados - Empresas - Tus derechos y obligaciones en la UE - Tu espacio europeo - Punto de Acceso General",
          "lang": "es",
          "charset": "",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Conoce sobre el desplazamiento de trabajadores en el marco de una prestación de servicios transnacional, a quién es aplicable, condiciones, duración, comunicación, personas que lo pueden solicitar, Centro de enlace a nivel nacional al que dirigirse en caso de duda sobre la autoridad laboral competente, Inspección y cooperación con las Administraciones públicas de otros Estados, Desplazamiento de trabajadores por empresas establecidas en España",
          "robots": "all",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 57,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 63,
          "tabletSmallTapTargets": 100,
          "fixedWidthOffenders": 16,
          "oversizedMedia": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 399,
            "viewportHeight": 864,
            "contentWidth": 399,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 10,
            "smallTapTargets": 63,
            "oversizedMedia": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 829,
            "viewportHeight": 1193,
            "contentWidth": 829,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 6,
            "smallTapTargets": 100,
            "oversizedMedia": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 63 small targets on mobile and 100 on tablet."
          },
          {
            "title": "Refactor fixed-width components",
            "urgency": "high",
            "detail": "16 element(s) exceeded viewport width in tested layouts; use responsive component constraints."
          }
        ]
      },
      "securityLight": {
        "score": 33,
        "urgency": "medium",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": false,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 2,
          "externalScriptsWithoutIntegrity": 2,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "connection": "Keep-Alive",
            "content-encoding": "gzip",
            "content-length": "21369",
            "content-type": "text/html;charset=UTF-8",
            "date": "Mon, 30 Mar 2026 00:36:44 GMT",
            "keep-alive": "timeout=15, max=500",
            "referrer-policy": "origin-when-cross-origin,strict-origin-when-cross-origin",
            "server": "Microsoft-IIS/5.0",
            "set-cookie": "VISITOR=returning; Path=/pag_Home/Tu-espacio-europeo/derechos-obligaciones/empresas/empleados; HttpOnly; Secure; SameSite=None\nTS01a8e1d0=01d9c3d318a8df60fb78bd16dbecd479f3574b53af6307f3292d4b0537431a42ad8b1305344a33bb9d19322e073c125f3da6a1aa230810e74a9b77ed3f2d939eabdc5aec9e207a068392e4d311a36d140afac2ba85; Path=/; HttpOnly; Secure; SameSite=None\nTS01186dd0=01d9c3d3184ffb337ca739d0053cfb0ca74d51f49f6307f3292d4b0537431a42ad8b1305344a33bb9d19322e073c125f3da6a1aa230810e74a9b77ed3f2d939eabdc5aec9eee8d4d4d58752025c871d7705ea4f3b024710e1af3826721524d5281cedab948; path=/pag_Home/Tu-espacio-europeo/derechos-obligaciones/empresas/empleados; HttpOnly; Secure; SameSite=None",
            "strict-transport-security": "max-age=63072000; preload",
            "vary": "Accept-Encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1;mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add a Content-Security-Policy header",
            "urgency": "high",
            "detail": "Add an appropriate CSP to reduce script injection and resource loading risk."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "2 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 30,
        "urgency": "medium",
        "origin": "https://administracion.gob.es",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://administracion.gob.es/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/favicon.ico",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 2403496.2,
        "checks": {
          "hasEffectiveTextCompression": false
        },
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "estimatedSavingsBytes": 1313541,
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "estimatedSavingsBytes": 891965,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "estimatedSavingsBytes": 126680.2,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "estimatedSavingsBytes": 63759,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "estimatedSavingsBytes": 7551,
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings."
          }
        ],
        "recommendations": [
          {
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
          },
          {
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
          },
          {
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 7.37 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 4256496.2,
        "totalEstimatedBlockingMs": 9207,
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable text compression",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat.",
            "estimatedSavingsBytes": 1313541,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,283 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-text-compression"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 1195460,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,167 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 891965,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 871 KiB",
            "urgency": "high",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unused-javascript",
            "title": "Remove unused JavaScript",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code.",
            "estimatedSavingsBytes": 546746,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 534 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-javascript"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9207,
            "displayValue": "Est savings of 9,210 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 126680.2,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 124 KiB",
            "urgency": "medium",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "offscreen-images",
            "title": "Lazy-load offscreen images",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed.",
            "estimatedSavingsBytes": 104082,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 102 KiB",
            "urgency": "medium",
            "sourceAuditId": "offscreen-images"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 63759,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 62 KiB",
            "urgency": "medium",
            "sourceAuditId": "unminified-javascript"
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss.",
            "estimatedSavingsBytes": 7551,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-optimized-images"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 6712,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-responsive-images"
          }
        ],
        "recommendations": [
          {
            "title": "Enable text compression",
            "urgency": "high",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat. Estimated byte savings: 1.25 MB."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "high",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 1.14 MB."
          },
          {
            "title": "Minify CSS",
            "urgency": "high",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 871.06 KB."
          },
          {
            "title": "Remove unused JavaScript",
            "urgency": "high",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code. Estimated byte savings: 533.93 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 9207 ms."
          },
          {
            "title": "Serve images in next-gen formats",
            "urgency": "medium",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 123.71 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 4,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 2,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "2 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1901906
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.81 MB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.81 MB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 32,
        "urgency": "high",
        "transferBytes": 2216423,
        "css": {
          "unusedBytes": 1195460,
          "ratio": 0.5393645527049665,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 546746,
          "duplicatedBytes": 0,
          "ratio": 0.2466794470189129,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0.125,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "high",
            "estimatedSavingsBytes": 1195460,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          },
          {
            "area": "javascript",
            "title": "Remove unused JavaScript and feature bundles",
            "urgency": "high",
            "estimatedSavingsBytes": 546746,
            "strategy": "Drop unused packages and feature code, or move them behind route-level or interaction-triggered imports.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 35,
        "urgency": "high",
        "transferBytes": 2216423,
        "estimatedDeferrableBytes": 1846288,
        "renderBlockingMs": 9207,
        "breakdown": {
          "offscreenImageSavings": 104082,
          "unusedJavascriptSavings": 546746,
          "unusedCssSavings": 1195460
        },
        "candidates": [
          {
            "title": "Lazy-load offscreen images",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 104082,
            "strategy": "Load below-the-fold images only when they approach the viewport.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Defer non-critical JavaScript",
            "area": "javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 546746,
            "strategy": "Split bundles and load feature code on interaction or route transition.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1195460,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9207,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy stylesheet from administracion.gob.es",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from administracion.gob.es",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 254417,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from administracion.gob.es",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.googletagmanager.com",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 145383,
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 34,
        "urgency": "medium",
        "providerCount": 1,
        "requestCount": 2,
        "transferBytes": 290071,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290071,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "medium",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "medium",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          }
        ]
      },
      "redundancy": {
        "score": 78,
        "urgency": "high",
        "transferBytes": 2216423,
        "estimatedRedundantBytes": 1742206,
        "redundancyRatio": 0.7860439997238794,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 1195460,
            "displayValue": "Est savings of 1,167 KiB"
          },
          {
            "auditId": "unused-javascript",
            "title": "Reduce unused JavaScript",
            "savingsBytes": 546746,
            "displayValue": "Est savings of 534 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "high",
            "estimatedSavingsBytes": 1195460,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce unused javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 546746,
            "auditId": "unused-javascript",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Enable and verify text compression",
            "urgency": "medium",
            "estimatedSavingsBytes": 1313541,
            "auditId": "uses-text-compression",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce DOM complexity and redundant markup",
            "urgency": "medium",
            "estimatedSavingsBytes": 0,
            "auditId": "dom-size",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 47,
        "urgency": "high",
        "totalTransferBytes": 2216423,
        "heavyRequestCount": 6,
        "heavyBytes": 1925288,
        "heavyRatio": 0.8686464632428016,
        "heavyRequests": [
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "transferSize": 1177193,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "transferSize": 254417,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "transferSize": 159823,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "transferSize": 145383,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-4YNNM3J1E0&cx=c&gtm=4e63p1",
            "transferSize": 144688,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/libs/jquery.mCustomScrollbar.css",
            "transferSize": 43784,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 1220977
          },
          {
            "resourceType": "script",
            "count": 3,
            "transferBytes": 544488
          },
          {
            "resourceType": "image",
            "count": 1,
            "transferBytes": 159823
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "administracion.gob.es",
            "count": 4,
            "transferBytes": 1635217
          },
          {
            "domain": "www.googletagmanager.com",
            "count": 2,
            "transferBytes": 290071
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Lazy-load offscreen images and media galleries",
            "urgency": "medium",
            "estimatedSavingsBytes": 104082,
            "strategy": "Load imagery only when it enters the viewport or when a user opens the relevant section.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Split JavaScript by route or interaction",
            "urgency": "high",
            "estimatedSavingsBytes": 546746,
            "strategy": "Move non-critical bundles behind route-level or event-driven imports so they are only fetched on demand.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy stylesheet asset from administracion.gob.es",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "strategy": "Split this stylesheet so component-specific CSS is delivered only when the component is rendered.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 254417,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0,
          "displayValue": "12.6 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 12.6 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": 0.02,
          "displayValue": "13.7 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- Current value: 13.7 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": 0,
          "displayValue": "Est savings of 534 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- Current value: Est savings of 534 KiB\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 1,167 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 1,167 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 9,210 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 9,210 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": 0,
          "displayValue": "Est savings of 1,283 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- Current value: Est savings of 1,283 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 124 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 124 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 7 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- Current value: Est savings of 7 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 102 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- Current value: Est savings of 102 KiB\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "dom-size",
          "title": "Avoid an excessive DOM size",
          "description": "A large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).",
          "score": 0.5,
          "displayValue": "968 elements",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Avoid an excessive DOM size\n\n- Lighthouse audit: dom-size\n- Current value: 968 elements\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nA large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/trabajo-jubilacion/seguridad-social-pensiones/Pensiones-clases-pasivas/jubilacion-retiro",
      "status": "ok",
      "finalUrl": "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/trabajo-jubilacion/seguridad-social-pensiones/Pensiones-clases-pasivas/jubilacion-retiro",
      "performanceScore": 0.56,
      "bestPracticesScore": 0.79,
      "transferBytes": 2187186,
      "co2Grams": 0.8378702749404,
      "greenWeb": {
        "page": {
          "hostname": "administracion.gob.es",
          "checked": true,
          "status": "not-green",
          "green": false,
          "hostedBy": null,
          "hostedByWebsite": null,
          "listedProvider": null,
          "partner": null,
          "modified": "2026-03-29T13:38:28.588564",
          "supportingDocuments": [],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/administracion.gob.es",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290071,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "not-green",
          "externalOriginCount": 1,
          "greenCount": 1,
          "notGreenCount": 1,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 70,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/buscador/buscadorsimple.htm|input|text|q|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "q",
            "formContext": "form|get|/buscador/buscadorsimple.htm",
            "hasLabel": false,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 70,
              "urgency": "high",
              "issues": [
                "Missing associated label",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add a programmatic label using <label>, aria-label, or aria-labelledby.",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "Missing associated label",
            "urgency": "high",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 35,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": false,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Pensiones de jubilación y retiro en Clases Pasivas - Pensiones de clases pasivas - Seguridad social y pensiones - Trabajo y jubilación - Ciudadanos - Tus derechos y obligaciones en la UE - Tu espacio europeo - Punto de Acceso General",
          "lang": "es",
          "charset": "",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Conoce qué requisitos debes reunir, a qué tienes derecho, cómo puedes solicitar la pensión.",
          "robots": "all",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 29,
          "tabletSmallTapTargets": 61,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 399,
            "viewportHeight": 864,
            "contentWidth": 399,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 29,
            "oversizedMedia": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 829,
            "viewportHeight": 1193,
            "contentWidth": 829,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 61,
            "oversizedMedia": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 29 small targets on mobile and 61 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 31,
        "urgency": "medium",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": false,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "connection": "Keep-Alive",
            "content-encoding": "gzip",
            "content-length": "12328",
            "content-type": "text/html;charset=UTF-8",
            "date": "Mon, 30 Mar 2026 00:37:06 GMT",
            "keep-alive": "timeout=15, max=500",
            "referrer-policy": "origin-when-cross-origin,strict-origin-when-cross-origin",
            "server": "Microsoft-IIS/5.0",
            "set-cookie": "VISITOR=returning; Path=/pag_Home/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/trabajo-jubilacion; HttpOnly; Secure; SameSite=None\nTS01a8e1d0=01d9c3d318a8df60fb78bd16dbecd479f3574b53af6307f3292d4b0537431a42ad8b1305344a33bb9d19322e073c125f3da6a1aa230810e74a9b77ed3f2d939eabdc5aec9e207a068392e4d311a36d140afac2ba85; Path=/; HttpOnly; Secure; SameSite=None\nTS01238137=01d9c3d318c4ce62233e4ada6b234171acb680a7e24bb5d2e1fe59469b2f1fdc4fc32679c776248f1624bb318aeee90fc88a90be85ae08dbfdacd7f62ac5b13f1916da05596c74b6317e298b889b42264504f511e5b82b54d90e8a18d6a77708d9c29b00ad; path=/pag_Home/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/trabajo-jubilacion; HttpOnly; Secure; SameSite=None",
            "strict-transport-security": "max-age=63072000; preload",
            "vary": "Accept-Encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1;mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add a Content-Security-Policy header",
            "urgency": "high",
            "detail": "Add an appropriate CSP to reduce script injection and resource loading risk."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 30,
        "urgency": "medium",
        "origin": "https://administracion.gob.es",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://administracion.gob.es/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/favicon.ico",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 2403496.2,
        "checks": {
          "hasEffectiveTextCompression": false
        },
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "estimatedSavingsBytes": 1313541,
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "estimatedSavingsBytes": 891965,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "estimatedSavingsBytes": 126680.2,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "estimatedSavingsBytes": 63759,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "estimatedSavingsBytes": 7551,
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings."
          }
        ],
        "recommendations": [
          {
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
          },
          {
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
          },
          {
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 7.37 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 4245695.2,
        "totalEstimatedBlockingMs": 8967,
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable text compression",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat.",
            "estimatedSavingsBytes": 1313541,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,283 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-text-compression"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 1197959,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,170 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 891965,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 871 KiB",
            "urgency": "high",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unused-javascript",
            "title": "Remove unused JavaScript",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code.",
            "estimatedSavingsBytes": 546413,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 534 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-javascript"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 8967,
            "displayValue": "Est savings of 8,970 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 126680.2,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 124 KiB",
            "urgency": "medium",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "offscreen-images",
            "title": "Lazy-load offscreen images",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed.",
            "estimatedSavingsBytes": 91115,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 89 KiB",
            "urgency": "medium",
            "sourceAuditId": "offscreen-images"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 63759,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 62 KiB",
            "urgency": "medium",
            "sourceAuditId": "unminified-javascript"
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss.",
            "estimatedSavingsBytes": 7551,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-optimized-images"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 6712,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-responsive-images"
          }
        ],
        "recommendations": [
          {
            "title": "Enable text compression",
            "urgency": "high",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat. Estimated byte savings: 1.25 MB."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "high",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 1.14 MB."
          },
          {
            "title": "Minify CSS",
            "urgency": "high",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 871.06 KB."
          },
          {
            "title": "Remove unused JavaScript",
            "urgency": "high",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code. Estimated byte savings: 533.61 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 8967 ms."
          },
          {
            "title": "Serve images in next-gen formats",
            "urgency": "medium",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 123.71 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1881916
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.79 MB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.79 MB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 30,
        "urgency": "high",
        "transferBytes": 2187186,
        "css": {
          "unusedBytes": 1197959,
          "ratio": 0.5477170208660809,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 546413,
          "duplicatedBytes": 0,
          "ratio": 0.24982466054555946,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "high",
            "estimatedSavingsBytes": 1197959,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          },
          {
            "area": "javascript",
            "title": "Remove unused JavaScript and feature bundles",
            "urgency": "high",
            "estimatedSavingsBytes": 546413,
            "strategy": "Drop unused packages and feature code, or move them behind route-level or interaction-triggered imports.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 35,
        "urgency": "high",
        "transferBytes": 2187186,
        "estimatedDeferrableBytes": 1835487,
        "renderBlockingMs": 8967,
        "breakdown": {
          "offscreenImageSavings": 91115,
          "unusedJavascriptSavings": 546413,
          "unusedCssSavings": 1197959
        },
        "candidates": [
          {
            "title": "Lazy-load offscreen images",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 91115,
            "strategy": "Load below-the-fold images only when they approach the viewport.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Defer non-critical JavaScript",
            "area": "javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 546413,
            "strategy": "Split bundles and load feature code on interaction or route transition.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1197959,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 8967,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy stylesheet from administracion.gob.es",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from administracion.gob.es",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 254418,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from administracion.gob.es",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.googletagmanager.com",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 145383,
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 34,
        "urgency": "medium",
        "providerCount": 1,
        "requestCount": 2,
        "transferBytes": 290071,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290071,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "medium",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "medium",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          }
        ]
      },
      "redundancy": {
        "score": 66,
        "urgency": "high",
        "transferBytes": 2187186,
        "estimatedRedundantBytes": 1744372,
        "redundancyRatio": 0.7975416814116404,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 1197959,
            "displayValue": "Est savings of 1,170 KiB"
          },
          {
            "auditId": "unused-javascript",
            "title": "Reduce unused JavaScript",
            "savingsBytes": 546413,
            "displayValue": "Est savings of 534 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "high",
            "estimatedSavingsBytes": 1197959,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce unused javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 546413,
            "auditId": "unused-javascript",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Enable and verify text compression",
            "urgency": "medium",
            "estimatedSavingsBytes": 1313541,
            "auditId": "uses-text-compression",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 47,
        "urgency": "high",
        "totalTransferBytes": 2187186,
        "heavyRequestCount": 6,
        "heavyBytes": 1925289,
        "heavyRatio": 0.8802584691013933,
        "heavyRequests": [
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "transferSize": 1177193,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "transferSize": 254418,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "transferSize": 159823,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "transferSize": 145383,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-4YNNM3J1E0&cx=c&gtm=4e63p1",
            "transferSize": 144688,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/libs/jquery.mCustomScrollbar.css",
            "transferSize": 43784,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 1220977
          },
          {
            "resourceType": "script",
            "count": 3,
            "transferBytes": 544489
          },
          {
            "resourceType": "image",
            "count": 1,
            "transferBytes": 159823
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "administracion.gob.es",
            "count": 4,
            "transferBytes": 1635218
          },
          {
            "domain": "www.googletagmanager.com",
            "count": 2,
            "transferBytes": 290071
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Lazy-load offscreen images and media galleries",
            "urgency": "medium",
            "estimatedSavingsBytes": 91115,
            "strategy": "Load imagery only when it enters the viewport or when a user opens the relevant section.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Split JavaScript by route or interaction",
            "urgency": "high",
            "estimatedSavingsBytes": 546413,
            "strategy": "Move non-critical bundles behind route-level or event-driven imports so they are only fetched on demand.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy stylesheet asset from administracion.gob.es",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "strategy": "Split this stylesheet so component-specific CSS is delivered only when the component is rendered.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 254418,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0,
          "displayValue": "11.3 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 11.3 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": 0.07,
          "displayValue": "10.5 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- Current value: 10.5 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": 0,
          "displayValue": "Est savings of 534 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- Current value: Est savings of 534 KiB\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 1,170 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 1,170 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 8,970 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 8,970 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": 0,
          "displayValue": "Est savings of 1,283 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- Current value: Est savings of 1,283 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 124 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 124 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 7 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- Current value: Est savings of 7 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 89 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- Current value: Est savings of 89 KiB\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://administracion.gob.es/pag_Home/gl/Tu-espacio-europeo/derechos-obligaciones/empresas/servicios/actividades-transfronterizas/sector-farmaceutico",
      "status": "ok",
      "finalUrl": "https://administracion.gob.es/pag_Home/gl/Tu-espacio-europeo/derechos-obligaciones/empresas/servicios/actividades-transfronterizas/sector-farmaceutico",
      "performanceScore": 0.56,
      "bestPracticesScore": 0.79,
      "transferBytes": 2189260,
      "co2Grams": 0.838664785764,
      "greenWeb": {
        "page": {
          "hostname": "administracion.gob.es",
          "checked": true,
          "status": "not-green",
          "green": false,
          "hostedBy": null,
          "hostedByWebsite": null,
          "listedProvider": null,
          "partner": null,
          "modified": "2026-03-29T13:38:28.588564",
          "supportingDocuments": [],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/administracion.gob.es",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290061,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "not-green",
          "externalOriginCount": 1,
          "greenCount": 1,
          "notGreenCount": 1,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 70,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/buscador/buscadorsimple.htm|input|text|q|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "q",
            "formContext": "form|get|/buscador/buscadorsimple.htm",
            "hasLabel": false,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 70,
              "urgency": "high",
              "issues": [
                "Missing associated label",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add a programmatic label using <label>, aria-label, or aria-labelledby.",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "Missing associated label",
            "urgency": "high",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 25,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": true,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": false,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Actividades transfronterizas. Sector farmacéutico - Notificación de actividades transfronterizas - Servicios - Empresas - Tus derechos y obligaciones en la UE - Tu espacio europeo - Punto de Acceso General",
          "lang": "gl",
          "charset": "",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Conoce las exportaciones y las importaciones de medicamentos y sus principios activos, los productos sanitarios, cosméticos, de cuidado personal y biocidas.",
          "robots": "all",
          "canonical": "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/empresas/servicios/actividades-transfronterizas/sector-farmaceutico",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 32,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 40,
          "tabletSmallTapTargets": 74,
          "fixedWidthOffenders": 1,
          "oversizedMedia": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 399,
            "viewportHeight": 864,
            "contentWidth": 399,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 1,
            "smallTapTargets": 40,
            "oversizedMedia": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 829,
            "viewportHeight": 1193,
            "contentWidth": 829,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 74,
            "oversizedMedia": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 40 small targets on mobile and 74 on tablet."
          },
          {
            "title": "Refactor fixed-width components",
            "urgency": "medium",
            "detail": "1 element(s) exceeded viewport width in tested layouts; use responsive component constraints."
          }
        ]
      },
      "securityLight": {
        "score": 33,
        "urgency": "medium",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": false,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 2,
          "externalScriptsWithoutIntegrity": 2,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "connection": "Keep-Alive",
            "content-encoding": "gzip",
            "content-type": "text/html;charset=UTF-8",
            "date": "Mon, 30 Mar 2026 00:37:28 GMT",
            "keep-alive": "timeout=15, max=500",
            "referrer-policy": "origin-when-cross-origin,strict-origin-when-cross-origin",
            "server": "Microsoft-IIS/5.0",
            "set-cookie": "VISITOR=returning; Path=/pag_Home/gl/Tu-espacio-europeo/derechos-obligaciones/empresas; HttpOnly; Secure; SameSite=None\nTS01a8e1d0=01d9c3d318a8df60fb78bd16dbecd479f3574b53af6307f3292d4b0537431a42ad8b1305344a33bb9d19322e073c125f3da6a1aa230810e74a9b77ed3f2d939eabdc5aec9e207a068392e4d311a36d140afac2ba85; Path=/; HttpOnly; Secure; SameSite=None\nTS013efc47=01d9c3d318e30d71c8f2baaadc7a422b508ec8f1b51a950e85b01dc930419b68c9a1e8639e95ff7a154a24dc16c6430f061b90f0ea52fcc5b3e1b8ca06f6cbb2c8c1d7490c1d9f388aaa462aa361eb925e482f499148a2e0fb86903edf66edba02ee20c5cf; path=/pag_Home/gl/Tu-espacio-europeo/derechos-obligaciones/empresas; HttpOnly; Secure; SameSite=None",
            "strict-transport-security": "max-age=63072000; preload",
            "transfer-encoding": "chunked",
            "vary": "Accept-Encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1;mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add a Content-Security-Policy header",
            "urgency": "high",
            "detail": "Add an appropriate CSP to reduce script injection and resource loading risk."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "2 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 30,
        "urgency": "medium",
        "origin": "https://administracion.gob.es",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://administracion.gob.es/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/favicon.ico",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 2403496.2,
        "checks": {
          "hasEffectiveTextCompression": false
        },
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "estimatedSavingsBytes": 1313541,
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "estimatedSavingsBytes": 891965,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "estimatedSavingsBytes": 126680.2,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "estimatedSavingsBytes": 63759,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "estimatedSavingsBytes": 7551,
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings."
          }
        ],
        "recommendations": [
          {
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
          },
          {
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
          },
          {
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 7.37 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 4246664.2,
        "totalEstimatedBlockingMs": 9516,
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable text compression",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat.",
            "estimatedSavingsBytes": 1313541,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,283 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-text-compression"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 1197996,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,170 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 891965,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 871 KiB",
            "urgency": "high",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unused-javascript",
            "title": "Remove unused JavaScript",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code.",
            "estimatedSavingsBytes": 547345,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 535 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-javascript"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9516,
            "displayValue": "Est savings of 9,520 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 126680.2,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 124 KiB",
            "urgency": "medium",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "offscreen-images",
            "title": "Lazy-load offscreen images",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed.",
            "estimatedSavingsBytes": 91115,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 89 KiB",
            "urgency": "medium",
            "sourceAuditId": "offscreen-images"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 63759,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 62 KiB",
            "urgency": "medium",
            "sourceAuditId": "unminified-javascript"
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss.",
            "estimatedSavingsBytes": 7551,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-optimized-images"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 6712,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-responsive-images"
          }
        ],
        "recommendations": [
          {
            "title": "Enable text compression",
            "urgency": "high",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat. Estimated byte savings: 1.25 MB."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "high",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 1.14 MB."
          },
          {
            "title": "Minify CSS",
            "urgency": "high",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 871.06 KB."
          },
          {
            "title": "Remove unused JavaScript",
            "urgency": "high",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code. Estimated byte savings: 534.52 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 9516 ms."
          },
          {
            "title": "Serve images in next-gen formats",
            "urgency": "medium",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 123.71 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 4,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 2,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "2 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1881895
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.79 MB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.79 MB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 30,
        "urgency": "high",
        "transferBytes": 2189260,
        "css": {
          "unusedBytes": 1197996,
          "ratio": 0.5472150406986835,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 547345,
          "duplicatedBytes": 0,
          "ratio": 0.25001370326046246,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "high",
            "estimatedSavingsBytes": 1197996,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          },
          {
            "area": "javascript",
            "title": "Remove unused JavaScript and feature bundles",
            "urgency": "high",
            "estimatedSavingsBytes": 547345,
            "strategy": "Drop unused packages and feature code, or move them behind route-level or interaction-triggered imports.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 35,
        "urgency": "high",
        "transferBytes": 2189260,
        "estimatedDeferrableBytes": 1836456,
        "renderBlockingMs": 9516,
        "breakdown": {
          "offscreenImageSavings": 91115,
          "unusedJavascriptSavings": 547345,
          "unusedCssSavings": 1197996
        },
        "candidates": [
          {
            "title": "Lazy-load offscreen images",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 91115,
            "strategy": "Load below-the-fold images only when they approach the viewport.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Defer non-critical JavaScript",
            "area": "javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 547345,
            "strategy": "Split bundles and load feature code on interaction or route transition.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1197996,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9516,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy stylesheet from administracion.gob.es",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from administracion.gob.es",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 254411,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from administracion.gob.es",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 159817,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.googletagmanager.com",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 145373,
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 34,
        "urgency": "medium",
        "providerCount": 1,
        "requestCount": 2,
        "transferBytes": 290061,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290061,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "medium",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "medium",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          }
        ]
      },
      "redundancy": {
        "score": 69,
        "urgency": "high",
        "transferBytes": 2189260,
        "estimatedRedundantBytes": 1745341,
        "redundancyRatio": 0.797228743959146,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 1197996,
            "displayValue": "Est savings of 1,170 KiB"
          },
          {
            "auditId": "unused-javascript",
            "title": "Reduce unused JavaScript",
            "savingsBytes": 547345,
            "displayValue": "Est savings of 535 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "high",
            "estimatedSavingsBytes": 1197996,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce unused javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 547345,
            "auditId": "unused-javascript",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Enable and verify text compression",
            "urgency": "medium",
            "estimatedSavingsBytes": 1313541,
            "auditId": "uses-text-compression",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 47,
        "urgency": "high",
        "totalTransferBytes": 2189260,
        "heavyRequestCount": 6,
        "heavyBytes": 1925266,
        "heavyRatio": 0.8794140485826261,
        "heavyRequests": [
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "transferSize": 1177193,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "transferSize": 254411,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "transferSize": 159817,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "transferSize": 145373,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-4YNNM3J1E0&cx=c&gtm=4e63p1",
            "transferSize": 144688,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/libs/jquery.mCustomScrollbar.css",
            "transferSize": 43784,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 1220977
          },
          {
            "resourceType": "script",
            "count": 3,
            "transferBytes": 544472
          },
          {
            "resourceType": "image",
            "count": 1,
            "transferBytes": 159817
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "administracion.gob.es",
            "count": 4,
            "transferBytes": 1635205
          },
          {
            "domain": "www.googletagmanager.com",
            "count": 2,
            "transferBytes": 290061
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Lazy-load offscreen images and media galleries",
            "urgency": "medium",
            "estimatedSavingsBytes": 91115,
            "strategy": "Load imagery only when it enters the viewport or when a user opens the relevant section.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Split JavaScript by route or interaction",
            "urgency": "high",
            "estimatedSavingsBytes": 547345,
            "strategy": "Move non-critical bundles behind route-level or event-driven imports so they are only fetched on demand.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy stylesheet asset from administracion.gob.es",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "strategy": "Split this stylesheet so component-specific CSS is delivered only when the component is rendered.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 254411,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 159817,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0,
          "displayValue": "12.1 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 12.1 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": 0.06,
          "displayValue": "11.1 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- Current value: 11.1 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": 0,
          "displayValue": "Est savings of 535 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- Current value: Est savings of 535 KiB\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 1,170 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 1,170 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 9,520 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 9,520 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": 0,
          "displayValue": "Est savings of 1,283 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- Current value: Est savings of 1,283 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 124 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 124 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 7 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- Current value: Est savings of 7 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 89 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- Current value: Est savings of 89 KiB\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://administracion.gob.es/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/trabajo-jubilacion/buscar-empleo",
      "status": "ok",
      "finalUrl": "https://administracion.gob.es/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/trabajo-jubilacion/buscar-empleo",
      "performanceScore": 0.56,
      "bestPracticesScore": 0.79,
      "transferBytes": 2255701,
      "co2Grams": 0.8641170970614002,
      "greenWeb": {
        "page": {
          "hostname": "administracion.gob.es",
          "checked": true,
          "status": "not-green",
          "green": false,
          "hostedBy": null,
          "hostedByWebsite": null,
          "listedProvider": null,
          "partner": null,
          "modified": "2026-03-29T13:38:28.588564",
          "supportingDocuments": [],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/administracion.gob.es",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290071,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "not-green",
          "externalOriginCount": 1,
          "greenCount": 1,
          "notGreenCount": 1,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 70,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/buscador/buscadorsimple.htm|input|text|q|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "q",
            "formContext": "form|get|/buscador/buscadorsimple.htm",
            "hasLabel": false,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 70,
              "urgency": "high",
              "issues": [
                "Missing associated label",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add a programmatic label using <label>, aria-label, or aria-labelledby.",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "Missing associated label",
            "urgency": "high",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 25,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": true,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": false,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Búsqueda de empleo - Trabajo y jubilación - Ciudadanos - Tus derechos y obligaciones en la UE - Tu espacio europeo - Punto de Acceso General",
          "lang": "eu",
          "charset": "",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Información práctica sobre cómo solicitar un empleo en otro Estado miembro, búsqueda de empleo y empleo público en España",
          "robots": "all",
          "canonical": "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/trabajo-jubilacion/buscar-empleo",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 34,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 61,
          "tabletSmallTapTargets": 99,
          "fixedWidthOffenders": 2,
          "oversizedMedia": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 399,
            "viewportHeight": 864,
            "contentWidth": 399,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 2,
            "smallTapTargets": 61,
            "oversizedMedia": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 829,
            "viewportHeight": 1193,
            "contentWidth": 829,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 99,
            "oversizedMedia": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 61 small targets on mobile and 99 on tablet."
          },
          {
            "title": "Refactor fixed-width components",
            "urgency": "medium",
            "detail": "2 element(s) exceeded viewport width in tested layouts; use responsive component constraints."
          }
        ]
      },
      "securityLight": {
        "score": 33,
        "urgency": "medium",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": false,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 2,
          "externalScriptsWithoutIntegrity": 2,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "connection": "Keep-Alive",
            "content-encoding": "gzip",
            "content-type": "text/html;charset=UTF-8",
            "date": "Mon, 30 Mar 2026 00:38:12 GMT",
            "keep-alive": "timeout=15, max=500",
            "referrer-policy": "origin-when-cross-origin,strict-origin-when-cross-origin",
            "server": "Microsoft-IIS/5.0",
            "set-cookie": "VISITOR=returning; Path=/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/ciudadanos; HttpOnly; Secure; SameSite=None\nTS01a8e1d0=01d9c3d318a8df60fb78bd16dbecd479f3574b53af6307f3292d4b0537431a42ad8b1305344a33bb9d19322e073c125f3da6a1aa230810e74a9b77ed3f2d939eabdc5aec9e207a068392e4d311a36d140afac2ba85; Path=/; HttpOnly; Secure; SameSite=None\nTS011d349b=01d9c3d3183d0ab5e35f0a4d3b0e06f02e6973180380529b1b9ba56384d07a19b66567890ae44783a444bdd5d48d6a967bacc4b9ad4bff902aea9909935fb9326af3d6d004f98a4d48eaff3a52021502918d296d1fe81761193e34385adc30c5a064c0078b; path=/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/ciudadanos; HttpOnly; Secure; SameSite=None",
            "strict-transport-security": "max-age=63072000; preload",
            "transfer-encoding": "chunked",
            "vary": "Accept-Encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1;mode=block",
            "traceresponse": "00-444567a40eb5a8cc08c97cbdbaea1f86-fe514716ecac6d07-01",
            "x-dt-tracestate": "acd5d8fe-344161ca@dt"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add a Content-Security-Policy header",
            "urgency": "high",
            "detail": "Add an appropriate CSP to reduce script injection and resource loading risk."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "2 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 30,
        "urgency": "medium",
        "origin": "https://administracion.gob.es",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://administracion.gob.es/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/favicon.ico",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 2403496.2,
        "checks": {
          "hasEffectiveTextCompression": false
        },
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "estimatedSavingsBytes": 1313541,
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "estimatedSavingsBytes": 891965,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "estimatedSavingsBytes": 126680.2,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "estimatedSavingsBytes": 63759,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "estimatedSavingsBytes": 7551,
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings."
          }
        ],
        "recommendations": [
          {
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
          },
          {
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
          },
          {
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 7.37 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 4285751.2,
        "totalEstimatedBlockingMs": 9199,
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable text compression",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat.",
            "estimatedSavingsBytes": 1313541,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,283 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-text-compression"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 1195356,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,167 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 891965,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 871 KiB",
            "urgency": "high",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unused-javascript",
            "title": "Remove unused JavaScript",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code.",
            "estimatedSavingsBytes": 545851,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 533 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-javascript"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9199,
            "displayValue": "Est savings of 9,200 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "offscreen-images",
            "title": "Lazy-load offscreen images",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed.",
            "estimatedSavingsBytes": 134336,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 131 KiB",
            "urgency": "medium",
            "sourceAuditId": "offscreen-images"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 126680.2,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 124 KiB",
            "urgency": "medium",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 63759,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 62 KiB",
            "urgency": "medium",
            "sourceAuditId": "unminified-javascript"
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss.",
            "estimatedSavingsBytes": 7551,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-optimized-images"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 6712,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-responsive-images"
          }
        ],
        "recommendations": [
          {
            "title": "Enable text compression",
            "urgency": "high",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat. Estimated byte savings: 1.25 MB."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "high",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 1.14 MB."
          },
          {
            "title": "Minify CSS",
            "urgency": "high",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 871.06 KB."
          },
          {
            "title": "Remove unused JavaScript",
            "urgency": "high",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code. Estimated byte savings: 533.06 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 9199 ms."
          },
          {
            "title": "Lazy-load offscreen images",
            "urgency": "medium",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed. Estimated byte savings: 131.19 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 4,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 2,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "2 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1944587
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.85 MB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.85 MB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 29,
        "urgency": "high",
        "transferBytes": 2255701,
        "css": {
          "unusedBytes": 1195356,
          "ratio": 0.5299266170472061,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 545851,
          "duplicatedBytes": 0,
          "ratio": 0.24198730239513128,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "high",
            "estimatedSavingsBytes": 1195356,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          },
          {
            "area": "javascript",
            "title": "Remove unused JavaScript and feature bundles",
            "urgency": "high",
            "estimatedSavingsBytes": 545851,
            "strategy": "Drop unused packages and feature code, or move them behind route-level or interaction-triggered imports.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 35,
        "urgency": "high",
        "transferBytes": 2255701,
        "estimatedDeferrableBytes": 1875543,
        "renderBlockingMs": 9199,
        "breakdown": {
          "offscreenImageSavings": 134336,
          "unusedJavascriptSavings": 545851,
          "unusedCssSavings": 1195356
        },
        "candidates": [
          {
            "title": "Lazy-load offscreen images",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 134336,
            "strategy": "Load below-the-fold images only when they approach the viewport.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Defer non-critical JavaScript",
            "area": "javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 545851,
            "strategy": "Split bundles and load feature code on interaction or route transition.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1195356,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9199,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy stylesheet from administracion.gob.es",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from administracion.gob.es",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 254411,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from administracion.gob.es",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.googletagmanager.com",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 145383,
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 34,
        "urgency": "medium",
        "providerCount": 1,
        "requestCount": 2,
        "transferBytes": 290071,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290071,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "medium",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "medium",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          }
        ]
      },
      "redundancy": {
        "score": 67,
        "urgency": "high",
        "transferBytes": 2255701,
        "estimatedRedundantBytes": 1741207,
        "redundancyRatio": 0.7719139194423374,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 1195356,
            "displayValue": "Est savings of 1,167 KiB"
          },
          {
            "auditId": "unused-javascript",
            "title": "Reduce unused JavaScript",
            "savingsBytes": 545851,
            "displayValue": "Est savings of 533 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "high",
            "estimatedSavingsBytes": 1195356,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce unused javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 545851,
            "auditId": "unused-javascript",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Enable and verify text compression",
            "urgency": "medium",
            "estimatedSavingsBytes": 1313541,
            "auditId": "uses-text-compression",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 46,
        "urgency": "high",
        "totalTransferBytes": 2255701,
        "heavyRequestCount": 6,
        "heavyBytes": 1925282,
        "heavyRatio": 0.8535182632804613,
        "heavyRequests": [
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "transferSize": 1177193,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "transferSize": 254411,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "transferSize": 159823,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "transferSize": 145383,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-4YNNM3J1E0&cx=c&gtm=4e63p1",
            "transferSize": 144688,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/libs/jquery.mCustomScrollbar.css",
            "transferSize": 43784,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 1220977
          },
          {
            "resourceType": "script",
            "count": 3,
            "transferBytes": 544482
          },
          {
            "resourceType": "image",
            "count": 1,
            "transferBytes": 159823
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "administracion.gob.es",
            "count": 4,
            "transferBytes": 1635211
          },
          {
            "domain": "www.googletagmanager.com",
            "count": 2,
            "transferBytes": 290071
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Lazy-load offscreen images and media galleries",
            "urgency": "high",
            "estimatedSavingsBytes": 134336,
            "strategy": "Load imagery only when it enters the viewport or when a user opens the relevant section.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Split JavaScript by route or interaction",
            "urgency": "high",
            "estimatedSavingsBytes": 545851,
            "strategy": "Move non-critical bundles behind route-level or event-driven imports so they are only fetched on demand.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy stylesheet asset from administracion.gob.es",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "strategy": "Split this stylesheet so component-specific CSS is delivered only when the component is rendered.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 254411,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0,
          "displayValue": "12.4 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 12.4 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": 0.05,
          "displayValue": "11.3 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- Current value: 11.3 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": 0,
          "displayValue": "Est savings of 533 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- Current value: Est savings of 533 KiB\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 1,167 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 1,167 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 9,200 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 9,200 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": 0,
          "displayValue": "Est savings of 1,283 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- Current value: Est savings of 1,283 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 124 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 124 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 7 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- Current value: Est savings of 7 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 131 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- Current value: Est savings of 131 KiB\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/empresas/impuestos/especiales/carbon",
      "status": "ok",
      "finalUrl": "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/empresas/impuestos/especiales/carbon",
      "performanceScore": 0.55,
      "bestPracticesScore": 0.79,
      "transferBytes": 2190606,
      "co2Grams": 0.8391804133284,
      "greenWeb": {
        "page": {
          "hostname": "administracion.gob.es",
          "checked": true,
          "status": "not-green",
          "green": false,
          "hostedBy": null,
          "hostedByWebsite": null,
          "listedProvider": null,
          "partner": null,
          "modified": "2026-03-29T13:38:28.588564",
          "supportingDocuments": [],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/administracion.gob.es",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290071,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "not-green",
          "externalOriginCount": 1,
          "greenCount": 1,
          "notGreenCount": 1,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 70,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/buscador/buscadorsimple.htm|input|text|q|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "q",
            "formContext": "form|get|/buscador/buscadorsimple.htm",
            "hasLabel": false,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 70,
              "urgency": "high",
              "issues": [
                "Missing associated label",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add a programmatic label using <label>, aria-label, or aria-labelledby.",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "Missing associated label",
            "urgency": "high",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 35,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": false,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Impuesto especial sobre el carbón - Impuestos especiales - Impuestos - Empresas - Tus derechos y obligaciones en la UE - Tu espacio europeo - Punto de Acceso General",
          "lang": "es",
          "charset": "",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Conoce dónde se aplica, operaciones sujetas, obligados a pagar y presentar el impuesto, exenciones, devoluciones, tipos impositivos, pago y declaración operaciones anuales, trámites fiscales que deben cumplir los operadores.",
          "robots": "all",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 38,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 40,
          "tabletSmallTapTargets": 72,
          "fixedWidthOffenders": 4,
          "oversizedMedia": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 399,
            "viewportHeight": 864,
            "contentWidth": 399,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 4,
            "smallTapTargets": 40,
            "oversizedMedia": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 829,
            "viewportHeight": 1193,
            "contentWidth": 829,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 72,
            "oversizedMedia": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 40 small targets on mobile and 72 on tablet."
          },
          {
            "title": "Refactor fixed-width components",
            "urgency": "medium",
            "detail": "4 element(s) exceeded viewport width in tested layouts; use responsive component constraints."
          }
        ]
      },
      "securityLight": {
        "score": 31,
        "urgency": "medium",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": false,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "connection": "Keep-Alive",
            "content-encoding": "gzip",
            "content-type": "text/html;charset=UTF-8",
            "date": "Mon, 30 Mar 2026 00:38:36 GMT",
            "keep-alive": "timeout=15, max=500",
            "referrer-policy": "origin-when-cross-origin,strict-origin-when-cross-origin",
            "server": "Microsoft-IIS/5.0",
            "set-cookie": "VISITOR=returning; Path=/pag_Home/Tu-espacio-europeo/derechos-obligaciones/empresas/impuestos; HttpOnly; Secure; SameSite=None\nTS01a8e1d0=01d9c3d318a8df60fb78bd16dbecd479f3574b53af6307f3292d4b0537431a42ad8b1305344a33bb9d19322e073c125f3da6a1aa230810e74a9b77ed3f2d939eabdc5aec9e207a068392e4d311a36d140afac2ba85; Path=/; HttpOnly; Secure; SameSite=None\nTS019d96f3=01d9c3d3184ffb337ca739d0053cfb0ca74d51f49f6307f3292d4b0537431a42ad8b1305344a33bb9d19322e073c125f3da6a1aa230810e74a9b77ed3f2d939eabdc5aec9eee8d4d4d58752025c871d7705ea4f3b024710e1af3826721524d5281cedab948; path=/pag_Home/Tu-espacio-europeo/derechos-obligaciones/empresas/impuestos; HttpOnly; Secure; SameSite=None",
            "strict-transport-security": "max-age=63072000; preload",
            "transfer-encoding": "chunked",
            "vary": "Accept-Encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1;mode=block",
            "traceresponse": "00-816e259c979ea7980b406763103ef0f2-04c7da6ddebee7cb-01",
            "x-dt-tracestate": "acd5d8fe-344161ca@dt"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add a Content-Security-Policy header",
            "urgency": "high",
            "detail": "Add an appropriate CSP to reduce script injection and resource loading risk."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 30,
        "urgency": "medium",
        "origin": "https://administracion.gob.es",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://administracion.gob.es/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/favicon.ico",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 2405028.2,
        "checks": {
          "hasEffectiveTextCompression": false
        },
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "estimatedSavingsBytes": 1315073,
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "estimatedSavingsBytes": 891965,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "estimatedSavingsBytes": 126680.2,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "estimatedSavingsBytes": 63759,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "estimatedSavingsBytes": 7551,
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings."
          }
        ],
        "recommendations": [
          {
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
          },
          {
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
          },
          {
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 7.37 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 4248200.2,
        "totalEstimatedBlockingMs": 8977,
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable text compression",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat.",
            "estimatedSavingsBytes": 1315073,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,284 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-text-compression"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 1197996,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,170 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 891965,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 871 KiB",
            "urgency": "high",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unused-javascript",
            "title": "Remove unused JavaScript",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code.",
            "estimatedSavingsBytes": 547349,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 535 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-javascript"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 8977,
            "displayValue": "Est savings of 8,980 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 126680.2,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 124 KiB",
            "urgency": "medium",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "offscreen-images",
            "title": "Lazy-load offscreen images",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed.",
            "estimatedSavingsBytes": 91115,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 89 KiB",
            "urgency": "medium",
            "sourceAuditId": "offscreen-images"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 63759,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 62 KiB",
            "urgency": "medium",
            "sourceAuditId": "unminified-javascript"
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss.",
            "estimatedSavingsBytes": 7551,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-optimized-images"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 6712,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-responsive-images"
          }
        ],
        "recommendations": [
          {
            "title": "Enable text compression",
            "urgency": "high",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat. Estimated byte savings: 1.25 MB."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "high",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 1.14 MB."
          },
          {
            "title": "Minify CSS",
            "urgency": "high",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 871.06 KB."
          },
          {
            "title": "Remove unused JavaScript",
            "urgency": "high",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code. Estimated byte savings: 534.52 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 8977 ms."
          },
          {
            "title": "Serve images in next-gen formats",
            "urgency": "medium",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 123.71 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1885188
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.80 MB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.80 MB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 30,
        "urgency": "high",
        "transferBytes": 2190606,
        "css": {
          "unusedBytes": 1197996,
          "ratio": 0.5468788088775435,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 547349,
          "duplicatedBytes": 0,
          "ratio": 0.24986191035722535,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "high",
            "estimatedSavingsBytes": 1197996,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          },
          {
            "area": "javascript",
            "title": "Remove unused JavaScript and feature bundles",
            "urgency": "high",
            "estimatedSavingsBytes": 547349,
            "strategy": "Drop unused packages and feature code, or move them behind route-level or interaction-triggered imports.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 35,
        "urgency": "high",
        "transferBytes": 2190606,
        "estimatedDeferrableBytes": 1836460,
        "renderBlockingMs": 8977,
        "breakdown": {
          "offscreenImageSavings": 91115,
          "unusedJavascriptSavings": 547349,
          "unusedCssSavings": 1197996
        },
        "candidates": [
          {
            "title": "Lazy-load offscreen images",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 91115,
            "strategy": "Load below-the-fold images only when they approach the viewport.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Defer non-critical JavaScript",
            "area": "javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 547349,
            "strategy": "Split bundles and load feature code on interaction or route transition.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1197996,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 8977,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy stylesheet from administracion.gob.es",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from administracion.gob.es",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 254411,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from administracion.gob.es",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.googletagmanager.com",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 145383,
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 34,
        "urgency": "medium",
        "providerCount": 1,
        "requestCount": 2,
        "transferBytes": 290071,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290071,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "medium",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "medium",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          }
        ]
      },
      "redundancy": {
        "score": 66,
        "urgency": "high",
        "transferBytes": 2190606,
        "estimatedRedundantBytes": 1745345,
        "redundancyRatio": 0.7967407192347689,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 1197996,
            "displayValue": "Est savings of 1,170 KiB"
          },
          {
            "auditId": "unused-javascript",
            "title": "Reduce unused JavaScript",
            "savingsBytes": 547349,
            "displayValue": "Est savings of 535 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "high",
            "estimatedSavingsBytes": 1197996,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce unused javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 547349,
            "auditId": "unused-javascript",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Enable and verify text compression",
            "urgency": "medium",
            "estimatedSavingsBytes": 1315073,
            "auditId": "uses-text-compression",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 47,
        "urgency": "high",
        "totalTransferBytes": 2190606,
        "heavyRequestCount": 6,
        "heavyBytes": 1925282,
        "heavyRatio": 0.8788810037039979,
        "heavyRequests": [
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "transferSize": 1177193,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "transferSize": 254411,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "transferSize": 159823,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "transferSize": 145383,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-4YNNM3J1E0&cx=c&gtm=4e63p1",
            "transferSize": 144688,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/libs/jquery.mCustomScrollbar.css",
            "transferSize": 43784,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 1220977
          },
          {
            "resourceType": "script",
            "count": 3,
            "transferBytes": 544482
          },
          {
            "resourceType": "image",
            "count": 1,
            "transferBytes": 159823
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "administracion.gob.es",
            "count": 4,
            "transferBytes": 1635211
          },
          {
            "domain": "www.googletagmanager.com",
            "count": 2,
            "transferBytes": 290071
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Lazy-load offscreen images and media galleries",
            "urgency": "medium",
            "estimatedSavingsBytes": 91115,
            "strategy": "Load imagery only when it enters the viewport or when a user opens the relevant section.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Split JavaScript by route or interaction",
            "urgency": "high",
            "estimatedSavingsBytes": 547349,
            "strategy": "Move non-critical bundles behind route-level or event-driven imports so they are only fetched on demand.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy stylesheet asset from administracion.gob.es",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "strategy": "Split this stylesheet so component-specific CSS is delivered only when the component is rendered.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 254411,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0,
          "displayValue": "11.6 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 11.6 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": 0.02,
          "displayValue": "13.1 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- Current value: 13.1 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": 0,
          "displayValue": "Est savings of 535 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- Current value: Est savings of 535 KiB\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 1,170 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 1,170 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 8,980 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 8,980 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": 0,
          "displayValue": "Est savings of 1,284 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- Current value: Est savings of 1,284 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 124 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 124 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 7 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- Current value: Est savings of 7 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 89 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- Current value: Est savings of 89 KiB\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/residencia/fallecimiento-repatriacion",
      "status": "ok",
      "finalUrl": "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/residencia/fallecimiento-repatriacion",
      "performanceScore": 0.55,
      "bestPracticesScore": 0.79,
      "transferBytes": 2204286,
      "co2Grams": 0.8444209668804,
      "greenWeb": {
        "page": {
          "hostname": "administracion.gob.es",
          "checked": true,
          "status": "not-green",
          "green": false,
          "hostedBy": null,
          "hostedByWebsite": null,
          "listedProvider": null,
          "partner": null,
          "modified": "2026-03-29T13:38:28.588564",
          "supportingDocuments": [],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/administracion.gob.es",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290071,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "not-green",
          "externalOriginCount": 1,
          "greenCount": 1,
          "notGreenCount": 1,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 70,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/buscador/buscadorsimple.htm|input|text|q|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "q",
            "formContext": "form|get|/buscador/buscadorsimple.htm",
            "hasLabel": false,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 70,
              "urgency": "high",
              "issues": [
                "Missing associated label",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add a programmatic label using <label>, aria-label, or aria-labelledby.",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "Missing associated label",
            "urgency": "high",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 35,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": false,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Fallecimiento en otro país de la UE y repatriación de restos - Residencia - Ciudadanos - Tus derechos y obligaciones en la UE - Tu espacio europeo - Punto de Acceso General",
          "lang": "es",
          "charset": "",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Conoce la asistencia consular en caso de fallecimiento en el extranjero.",
          "robots": "all",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 34,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 35,
          "tabletSmallTapTargets": 62,
          "fixedWidthOffenders": 2,
          "oversizedMedia": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 399,
            "viewportHeight": 864,
            "contentWidth": 399,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 2,
            "smallTapTargets": 35,
            "oversizedMedia": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 829,
            "viewportHeight": 1193,
            "contentWidth": 829,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 62,
            "oversizedMedia": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 35 small targets on mobile and 62 on tablet."
          },
          {
            "title": "Refactor fixed-width components",
            "urgency": "medium",
            "detail": "2 element(s) exceeded viewport width in tested layouts; use responsive component constraints."
          }
        ]
      },
      "securityLight": {
        "score": 31,
        "urgency": "medium",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": false,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "connection": "Keep-Alive",
            "content-encoding": "gzip",
            "content-type": "text/html;charset=UTF-8",
            "date": "Mon, 30 Mar 2026 00:38:58 GMT",
            "keep-alive": "timeout=15, max=500",
            "referrer-policy": "origin-when-cross-origin,strict-origin-when-cross-origin",
            "server": "Microsoft-IIS/5.0",
            "set-cookie": "VISITOR=returning; Path=/pag_Home/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/residencia; HttpOnly; Secure; SameSite=None\nTS01a8e1d0=01d9c3d318a8df60fb78bd16dbecd479f3574b53af6307f3292d4b0537431a42ad8b1305344a33bb9d19322e073c125f3da6a1aa230810e74a9b77ed3f2d939eabdc5aec9e207a068392e4d311a36d140afac2ba85; Path=/; HttpOnly; Secure; SameSite=None\nTS017d1333=01d9c3d3184ffb337ca739d0053cfb0ca74d51f49f6307f3292d4b0537431a42ad8b1305344a33bb9d19322e073c125f3da6a1aa230810e74a9b77ed3f2d939eabdc5aec9eee8d4d4d58752025c871d7705ea4f3b024710e1af3826721524d5281cedab948; path=/pag_Home/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/residencia; HttpOnly; Secure; SameSite=None",
            "strict-transport-security": "max-age=63072000; preload",
            "transfer-encoding": "chunked",
            "vary": "Accept-Encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1;mode=block",
            "traceresponse": "00-f9ce141c0324897fe02a20cc5f337bb5-6cf0724d9547775a-01",
            "x-dt-tracestate": "acd5d8fe-344161ca@dt"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add a Content-Security-Policy header",
            "urgency": "high",
            "detail": "Add an appropriate CSP to reduce script injection and resource loading risk."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 30,
        "urgency": "medium",
        "origin": "https://administracion.gob.es",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://administracion.gob.es/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/favicon.ico",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 2403496.2,
        "checks": {
          "hasEffectiveTextCompression": false
        },
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "estimatedSavingsBytes": 1313541,
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "estimatedSavingsBytes": 891965,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "estimatedSavingsBytes": 126680.2,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "estimatedSavingsBytes": 63759,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "estimatedSavingsBytes": 7551,
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings."
          }
        ],
        "recommendations": [
          {
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
          },
          {
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
          },
          {
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 7.37 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 4254897.2,
        "totalEstimatedBlockingMs": 9274,
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable text compression",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat.",
            "estimatedSavingsBytes": 1313541,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,283 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-text-compression"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 1196417,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,168 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 891965,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 871 KiB",
            "urgency": "high",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unused-javascript",
            "title": "Remove unused JavaScript",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code.",
            "estimatedSavingsBytes": 546318,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 534 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-javascript"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9274,
            "displayValue": "Est savings of 9,270 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 126680.2,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 124 KiB",
            "urgency": "medium",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "offscreen-images",
            "title": "Lazy-load offscreen images",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed.",
            "estimatedSavingsBytes": 101954,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 100 KiB",
            "urgency": "medium",
            "sourceAuditId": "offscreen-images"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 63759,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 62 KiB",
            "urgency": "medium",
            "sourceAuditId": "unminified-javascript"
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss.",
            "estimatedSavingsBytes": 7551,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-optimized-images"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 6712,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-responsive-images"
          }
        ],
        "recommendations": [
          {
            "title": "Enable text compression",
            "urgency": "high",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat. Estimated byte savings: 1.25 MB."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "high",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 1.14 MB."
          },
          {
            "title": "Minify CSS",
            "urgency": "high",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 871.06 KB."
          },
          {
            "title": "Remove unused JavaScript",
            "urgency": "high",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code. Estimated byte savings: 533.51 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 9274 ms."
          },
          {
            "title": "Serve images in next-gen formats",
            "urgency": "medium",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 123.71 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1897041
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.81 MB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.81 MB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 30,
        "urgency": "high",
        "transferBytes": 2204286,
        "css": {
          "unusedBytes": 1196417,
          "ratio": 0.5427684973728455,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 546318,
          "duplicatedBytes": 0,
          "ratio": 0.24784351939811802,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "high",
            "estimatedSavingsBytes": 1196417,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          },
          {
            "area": "javascript",
            "title": "Remove unused JavaScript and feature bundles",
            "urgency": "high",
            "estimatedSavingsBytes": 546318,
            "strategy": "Drop unused packages and feature code, or move them behind route-level or interaction-triggered imports.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 35,
        "urgency": "high",
        "transferBytes": 2204286,
        "estimatedDeferrableBytes": 1844689,
        "renderBlockingMs": 9274,
        "breakdown": {
          "offscreenImageSavings": 101954,
          "unusedJavascriptSavings": 546318,
          "unusedCssSavings": 1196417
        },
        "candidates": [
          {
            "title": "Lazy-load offscreen images",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 101954,
            "strategy": "Load below-the-fold images only when they approach the viewport.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Defer non-critical JavaScript",
            "area": "javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 546318,
            "strategy": "Split bundles and load feature code on interaction or route transition.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1196417,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9274,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy stylesheet from administracion.gob.es",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from administracion.gob.es",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 254418,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from administracion.gob.es",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 159817,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.googletagmanager.com",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 145383,
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 34,
        "urgency": "medium",
        "providerCount": 1,
        "requestCount": 2,
        "transferBytes": 290071,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290071,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "medium",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "medium",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          }
        ]
      },
      "redundancy": {
        "score": 66,
        "urgency": "high",
        "transferBytes": 2204286,
        "estimatedRedundantBytes": 1742735,
        "redundancyRatio": 0.7906120167709635,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 1196417,
            "displayValue": "Est savings of 1,168 KiB"
          },
          {
            "auditId": "unused-javascript",
            "title": "Reduce unused JavaScript",
            "savingsBytes": 546318,
            "displayValue": "Est savings of 534 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "high",
            "estimatedSavingsBytes": 1196417,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce unused javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 546318,
            "auditId": "unused-javascript",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Enable and verify text compression",
            "urgency": "medium",
            "estimatedSavingsBytes": 1313541,
            "auditId": "uses-text-compression",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 47,
        "urgency": "high",
        "totalTransferBytes": 2204286,
        "heavyRequestCount": 6,
        "heavyBytes": 1925283,
        "heavyRatio": 0.8734270416815241,
        "heavyRequests": [
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "transferSize": 1177193,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "transferSize": 254418,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "transferSize": 159817,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "transferSize": 145383,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-4YNNM3J1E0&cx=c&gtm=4e63p1",
            "transferSize": 144688,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/libs/jquery.mCustomScrollbar.css",
            "transferSize": 43784,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 1220977
          },
          {
            "resourceType": "script",
            "count": 3,
            "transferBytes": 544489
          },
          {
            "resourceType": "image",
            "count": 1,
            "transferBytes": 159817
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "administracion.gob.es",
            "count": 4,
            "transferBytes": 1635212
          },
          {
            "domain": "www.googletagmanager.com",
            "count": 2,
            "transferBytes": 290071
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Lazy-load offscreen images and media galleries",
            "urgency": "medium",
            "estimatedSavingsBytes": 101954,
            "strategy": "Load imagery only when it enters the viewport or when a user opens the relevant section.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Split JavaScript by route or interaction",
            "urgency": "high",
            "estimatedSavingsBytes": 546318,
            "strategy": "Move non-critical bundles behind route-level or event-driven imports so they are only fetched on demand.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy stylesheet asset from administracion.gob.es",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "strategy": "Split this stylesheet so component-specific CSS is delivered only when the component is rendered.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 254418,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 159817,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0,
          "displayValue": "12.1 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 12.1 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": 0.03,
          "displayValue": "12.5 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- Current value: 12.5 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": 0,
          "displayValue": "Est savings of 534 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- Current value: Est savings of 534 KiB\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 1,168 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 1,168 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 9,270 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 9,270 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": 0,
          "displayValue": "Est savings of 1,283 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- Current value: Est savings of 1,283 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 124 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 124 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 7 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- Current value: Est savings of 7 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 100 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- Current value: Est savings of 100 KiB\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://administracion.gob.es/pag_Home/gl/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/trabajo-jubilacion/fiscalidad/trabajadores-transfronterizos",
      "status": "ok",
      "finalUrl": "https://administracion.gob.es/pag_Home/gl/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/trabajo-jubilacion/fiscalidad/trabajadores-transfronterizos",
      "performanceScore": 0.55,
      "bestPracticesScore": 0.79,
      "transferBytes": 2182951,
      "co2Grams": 0.8362479252114,
      "greenWeb": {
        "page": {
          "hostname": "administracion.gob.es",
          "checked": true,
          "status": "not-green",
          "green": false,
          "hostedBy": null,
          "hostedByWebsite": null,
          "listedProvider": null,
          "partner": null,
          "modified": "2026-03-29T13:38:28.588564",
          "supportingDocuments": [],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/administracion.gob.es",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290071,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "not-green",
          "externalOriginCount": 1,
          "greenCount": 1,
          "notGreenCount": 1,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 70,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/buscador/buscadorsimple.htm|input|text|q|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "q",
            "formContext": "form|get|/buscador/buscadorsimple.htm",
            "hasLabel": false,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 70,
              "urgency": "high",
              "issues": [
                "Missing associated label",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add a programmatic label using <label>, aria-label, or aria-labelledby.",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "Missing associated label",
            "urgency": "high",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 25,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": true,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": false,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Trabajadores transfronterizos: Fiscalidad - Fiscalidad - Trabajo y jubilación - Ciudadanos - Tus derechos y obligaciones en la UE - Tu espacio europeo - Punto de Acceso General",
          "lang": "gl",
          "charset": "",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Conoce el régimen fiscal de los trabajadores fronterizos, la residencia fiscal en España, residencia en dos Estados y no residentes, especificidad del Convenio para evitar la doble imposición con Francia y Portugal y recursos y reclamaciones contra liquidaciones tributarias.",
          "robots": "all",
          "canonical": "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/trabajo-jubilacion/fiscalidad/trabajadores-transfronterizos",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 42,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 48,
          "tabletSmallTapTargets": 83,
          "fixedWidthOffenders": 6,
          "oversizedMedia": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 399,
            "viewportHeight": 864,
            "contentWidth": 399,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 5,
            "smallTapTargets": 48,
            "oversizedMedia": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 829,
            "viewportHeight": 1193,
            "contentWidth": 829,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 1,
            "smallTapTargets": 83,
            "oversizedMedia": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 48 small targets on mobile and 83 on tablet."
          },
          {
            "title": "Refactor fixed-width components",
            "urgency": "medium",
            "detail": "6 element(s) exceeded viewport width in tested layouts; use responsive component constraints."
          }
        ]
      },
      "securityLight": {
        "score": 31,
        "urgency": "medium",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": false,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "connection": "Keep-Alive",
            "content-encoding": "gzip",
            "content-length": "16907",
            "content-type": "text/html;charset=UTF-8",
            "date": "Mon, 30 Mar 2026 00:39:22 GMT",
            "keep-alive": "timeout=15, max=500",
            "referrer-policy": "origin-when-cross-origin,strict-origin-when-cross-origin",
            "server": "Microsoft-IIS/5.0",
            "set-cookie": "VISITOR=returning; Path=/pag_Home/gl/Tu-espacio-europeo/derechos-obligaciones/ciudadanos; HttpOnly; Secure; SameSite=None\nTS01a8e1d0=01d9c3d318a8df60fb78bd16dbecd479f3574b53af6307f3292d4b0537431a42ad8b1305344a33bb9d19322e073c125f3da6a1aa230810e74a9b77ed3f2d939eabdc5aec9e207a068392e4d311a36d140afac2ba85; Path=/; HttpOnly; Secure; SameSite=None\nTS0146228d=01d9c3d31875eb4ee065abf109a5ef141663ea9e5662999d88da62791f603954b0657e3ad206abe0e840a1f31af532847905d0382b90b7a84781f287b0f8ea376c270e95758790e5f992ab8a462f1118463bf9b8565956db104bfe20987b3f54c98e7c3998; path=/pag_Home/gl/Tu-espacio-europeo/derechos-obligaciones/ciudadanos; HttpOnly; Secure; SameSite=None",
            "strict-transport-security": "max-age=63072000; preload",
            "vary": "Accept-Encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1;mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add a Content-Security-Policy header",
            "urgency": "high",
            "detail": "Add an appropriate CSP to reduce script injection and resource loading risk."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 30,
        "urgency": "medium",
        "origin": "https://administracion.gob.es",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://administracion.gob.es/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/favicon.ico",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 2397750.2,
        "checks": {
          "hasEffectiveTextCompression": false
        },
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "estimatedSavingsBytes": 1307795,
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "estimatedSavingsBytes": 891965,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "estimatedSavingsBytes": 126680.2,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "estimatedSavingsBytes": 63759,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "estimatedSavingsBytes": 7551,
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings."
          }
        ],
        "recommendations": [
          {
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
          },
          {
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
          },
          {
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 7.37 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 4240763.2,
        "totalEstimatedBlockingMs": 9271,
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable text compression",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat.",
            "estimatedSavingsBytes": 1307795,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,277 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-text-compression"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 1197879,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,170 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 891965,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 871 KiB",
            "urgency": "high",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unused-javascript",
            "title": "Remove unused JavaScript",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code.",
            "estimatedSavingsBytes": 547307,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 534 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-javascript"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9271,
            "displayValue": "Est savings of 9,270 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 126680.2,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 124 KiB",
            "urgency": "medium",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "offscreen-images",
            "title": "Lazy-load offscreen images",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed.",
            "estimatedSavingsBytes": 91115,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 89 KiB",
            "urgency": "medium",
            "sourceAuditId": "offscreen-images"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 63759,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 62 KiB",
            "urgency": "medium",
            "sourceAuditId": "unminified-javascript"
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss.",
            "estimatedSavingsBytes": 7551,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-optimized-images"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 6712,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-responsive-images"
          }
        ],
        "recommendations": [
          {
            "title": "Enable text compression",
            "urgency": "high",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat. Estimated byte savings: 1.25 MB."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "high",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 1.14 MB."
          },
          {
            "title": "Minify CSS",
            "urgency": "high",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 871.06 KB."
          },
          {
            "title": "Remove unused JavaScript",
            "urgency": "high",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code. Estimated byte savings: 534.48 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 9271 ms."
          },
          {
            "title": "Serve images in next-gen formats",
            "urgency": "medium",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 123.71 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1873127
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.79 MB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.79 MB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 30,
        "urgency": "high",
        "transferBytes": 2182951,
        "css": {
          "unusedBytes": 1197879,
          "ratio": 0.5487429630807105,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 547307,
          "duplicatedBytes": 0,
          "ratio": 0.2507188663419381,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "high",
            "estimatedSavingsBytes": 1197879,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          },
          {
            "area": "javascript",
            "title": "Remove unused JavaScript and feature bundles",
            "urgency": "high",
            "estimatedSavingsBytes": 547307,
            "strategy": "Drop unused packages and feature code, or move them behind route-level or interaction-triggered imports.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 35,
        "urgency": "high",
        "transferBytes": 2182951,
        "estimatedDeferrableBytes": 1836301,
        "renderBlockingMs": 9271,
        "breakdown": {
          "offscreenImageSavings": 91115,
          "unusedJavascriptSavings": 547307,
          "unusedCssSavings": 1197879
        },
        "candidates": [
          {
            "title": "Lazy-load offscreen images",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 91115,
            "strategy": "Load below-the-fold images only when they approach the viewport.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Defer non-critical JavaScript",
            "area": "javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 547307,
            "strategy": "Split bundles and load feature code on interaction or route transition.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1197879,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9271,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy stylesheet from administracion.gob.es",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from administracion.gob.es",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 254418,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from administracion.gob.es",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 159817,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.googletagmanager.com",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 145383,
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 34,
        "urgency": "medium",
        "providerCount": 1,
        "requestCount": 2,
        "transferBytes": 290071,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290071,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "medium",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "medium",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          }
        ]
      },
      "redundancy": {
        "score": 66,
        "urgency": "high",
        "transferBytes": 2182951,
        "estimatedRedundantBytes": 1745186,
        "redundancyRatio": 0.7994618294226485,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 1197879,
            "displayValue": "Est savings of 1,170 KiB"
          },
          {
            "auditId": "unused-javascript",
            "title": "Reduce unused JavaScript",
            "savingsBytes": 547307,
            "displayValue": "Est savings of 534 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "high",
            "estimatedSavingsBytes": 1197879,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce unused javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 547307,
            "auditId": "unused-javascript",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Enable and verify text compression",
            "urgency": "medium",
            "estimatedSavingsBytes": 1307795,
            "auditId": "uses-text-compression",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 47,
        "urgency": "high",
        "totalTransferBytes": 2182951,
        "heavyRequestCount": 6,
        "heavyBytes": 1925283,
        "heavyRatio": 0.8819634522259089,
        "heavyRequests": [
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "transferSize": 1177193,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "transferSize": 254418,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "transferSize": 159817,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "transferSize": 145383,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-4YNNM3J1E0&cx=c&gtm=4e63p1",
            "transferSize": 144688,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/libs/jquery.mCustomScrollbar.css",
            "transferSize": 43784,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 1220977
          },
          {
            "resourceType": "script",
            "count": 3,
            "transferBytes": 544489
          },
          {
            "resourceType": "image",
            "count": 1,
            "transferBytes": 159817
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "administracion.gob.es",
            "count": 4,
            "transferBytes": 1635212
          },
          {
            "domain": "www.googletagmanager.com",
            "count": 2,
            "transferBytes": 290071
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Lazy-load offscreen images and media galleries",
            "urgency": "medium",
            "estimatedSavingsBytes": 91115,
            "strategy": "Load imagery only when it enters the viewport or when a user opens the relevant section.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Split JavaScript by route or interaction",
            "urgency": "high",
            "estimatedSavingsBytes": 547307,
            "strategy": "Move non-critical bundles behind route-level or event-driven imports so they are only fetched on demand.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy stylesheet asset from administracion.gob.es",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "strategy": "Split this stylesheet so component-specific CSS is delivered only when the component is rendered.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 254418,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 159817,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0,
          "displayValue": "12.4 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 12.4 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": 0.03,
          "displayValue": "12.4 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- Current value: 12.4 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": 0,
          "displayValue": "Est savings of 534 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- Current value: Est savings of 534 KiB\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 1,170 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 1,170 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 9,270 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 9,270 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": 0,
          "displayValue": "Est savings of 1,277 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- Current value: Est savings of 1,277 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 124 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 124 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 7 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- Current value: Est savings of 7 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 89 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- Current value: Est savings of 89 KiB\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://administracion.gob.es/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/residencia/obtencion-residencia/info-general",
      "status": "ok",
      "finalUrl": "https://administracion.gob.es/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/residencia/obtencion-residencia/info-general",
      "performanceScore": 0.55,
      "bestPracticesScore": 0.79,
      "transferBytes": 2210536,
      "co2Grams": 0.8468152256304001,
      "greenWeb": {
        "page": {
          "hostname": "administracion.gob.es",
          "checked": true,
          "status": "not-green",
          "green": false,
          "hostedBy": null,
          "hostedByWebsite": null,
          "listedProvider": null,
          "partner": null,
          "modified": "2026-03-29T13:38:28.588564",
          "supportingDocuments": [],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/administracion.gob.es",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290275,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "not-green",
          "externalOriginCount": 1,
          "greenCount": 1,
          "notGreenCount": 1,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 70,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/buscador/buscadorsimple.htm|input|text|q|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "q",
            "formContext": "form|get|/buscador/buscadorsimple.htm",
            "hasLabel": false,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 70,
              "urgency": "high",
              "issues": [
                "Missing associated label",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add a programmatic label using <label>, aria-label, or aria-labelledby.",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "Missing associated label",
            "urgency": "high",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 25,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": true,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": false,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Obtener la residencia - Obtención de la residencia - Residencia - Ciudadanos - Tus derechos y obligaciones en la UE - Tu espacio europeo - Punto de Acceso General",
          "lang": "eu",
          "charset": "",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Derecho de residencia de un ciudadano de la UE y sus familiares y casos en los que se mantiene la condición de trabajador",
          "robots": "all",
          "canonical": "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/residencia/obtencion-residencia/info-general",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 32,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 39,
          "tabletSmallTapTargets": 68,
          "fixedWidthOffenders": 1,
          "oversizedMedia": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 399,
            "viewportHeight": 864,
            "contentWidth": 399,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 1,
            "smallTapTargets": 39,
            "oversizedMedia": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 829,
            "viewportHeight": 1193,
            "contentWidth": 829,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 68,
            "oversizedMedia": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 39 small targets on mobile and 68 on tablet."
          },
          {
            "title": "Refactor fixed-width components",
            "urgency": "medium",
            "detail": "1 element(s) exceeded viewport width in tested layouts; use responsive component constraints."
          }
        ]
      },
      "securityLight": {
        "score": 33,
        "urgency": "medium",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": false,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 2,
          "externalScriptsWithoutIntegrity": 2,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "connection": "Keep-Alive",
            "content-encoding": "gzip",
            "content-length": "15900",
            "content-type": "text/html;charset=UTF-8",
            "date": "Mon, 30 Mar 2026 00:39:46 GMT",
            "keep-alive": "timeout=15, max=500",
            "referrer-policy": "origin-when-cross-origin,strict-origin-when-cross-origin",
            "server": "Microsoft-IIS/5.0",
            "set-cookie": "VISITOR=returning; Path=/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/ciudadanos; HttpOnly; Secure; SameSite=None\nTS01a8e1d0=01d9c3d318a8df60fb78bd16dbecd479f3574b53af6307f3292d4b0537431a42ad8b1305344a33bb9d19322e073c125f3da6a1aa230810e74a9b77ed3f2d939eabdc5aec9e207a068392e4d311a36d140afac2ba85; Path=/; HttpOnly; Secure; SameSite=None\nTS011d349b=01d9c3d3183d0ab5e35f0a4d3b0e06f02e6973180380529b1b9ba56384d07a19b66567890ae44783a444bdd5d48d6a967bacc4b9ad4bff902aea9909935fb9326af3d6d004f98a4d48eaff3a52021502918d296d1fe81761193e34385adc30c5a064c0078b; path=/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/ciudadanos; HttpOnly; Secure; SameSite=None",
            "strict-transport-security": "max-age=63072000; preload",
            "vary": "Accept-Encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1;mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add a Content-Security-Policy header",
            "urgency": "high",
            "detail": "Add an appropriate CSP to reduce script injection and resource loading risk."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "2 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 30,
        "urgency": "medium",
        "origin": "https://administracion.gob.es",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://administracion.gob.es/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/favicon.ico",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 2403496.2,
        "checks": {
          "hasEffectiveTextCompression": false
        },
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "estimatedSavingsBytes": 1313541,
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "estimatedSavingsBytes": 891965,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "estimatedSavingsBytes": 126680.2,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "estimatedSavingsBytes": 63759,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "estimatedSavingsBytes": 7551,
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings."
          }
        ],
        "recommendations": [
          {
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
          },
          {
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
          },
          {
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 7.37 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 4256498.2,
        "totalEstimatedBlockingMs": 9011,
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable text compression",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat.",
            "estimatedSavingsBytes": 1313541,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,283 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-text-compression"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 1195646,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,168 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 891965,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 871 KiB",
            "urgency": "high",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unused-javascript",
            "title": "Remove unused JavaScript",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code.",
            "estimatedSavingsBytes": 546451,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 534 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-javascript"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9011,
            "displayValue": "Est savings of 9,010 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 126680.2,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 124 KiB",
            "urgency": "medium",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "offscreen-images",
            "title": "Lazy-load offscreen images",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed.",
            "estimatedSavingsBytes": 104193,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 102 KiB",
            "urgency": "medium",
            "sourceAuditId": "offscreen-images"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 63759,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 62 KiB",
            "urgency": "medium",
            "sourceAuditId": "unminified-javascript"
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss.",
            "estimatedSavingsBytes": 7551,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-optimized-images"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 6712,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-responsive-images"
          }
        ],
        "recommendations": [
          {
            "title": "Enable text compression",
            "urgency": "high",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat. Estimated byte savings: 1.25 MB."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "high",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 1.14 MB."
          },
          {
            "title": "Minify CSS",
            "urgency": "high",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 871.06 KB."
          },
          {
            "title": "Remove unused JavaScript",
            "urgency": "high",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code. Estimated byte savings: 533.64 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 9011 ms."
          },
          {
            "title": "Serve images in next-gen formats",
            "urgency": "medium",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 123.71 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 4,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 2,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "2 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1901546
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.81 MB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.81 MB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 30,
        "urgency": "high",
        "transferBytes": 2210536,
        "css": {
          "unusedBytes": 1195646,
          "ratio": 0.5408851065985806,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 546451,
          "duplicatedBytes": 0,
          "ratio": 0.24720294082521163,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "high",
            "estimatedSavingsBytes": 1195646,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          },
          {
            "area": "javascript",
            "title": "Remove unused JavaScript and feature bundles",
            "urgency": "high",
            "estimatedSavingsBytes": 546451,
            "strategy": "Drop unused packages and feature code, or move them behind route-level or interaction-triggered imports.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 35,
        "urgency": "high",
        "transferBytes": 2210536,
        "estimatedDeferrableBytes": 1846290,
        "renderBlockingMs": 9011,
        "breakdown": {
          "offscreenImageSavings": 104193,
          "unusedJavascriptSavings": 546451,
          "unusedCssSavings": 1195646
        },
        "candidates": [
          {
            "title": "Lazy-load offscreen images",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 104193,
            "strategy": "Load below-the-fold images only when they approach the viewport.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Defer non-critical JavaScript",
            "area": "javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 546451,
            "strategy": "Split bundles and load feature code on interaction or route transition.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1195646,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9011,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy stylesheet from administracion.gob.es",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from administracion.gob.es",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 254418,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from administracion.gob.es",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.googletagmanager.com",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 145490,
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 34,
        "urgency": "medium",
        "providerCount": 1,
        "requestCount": 2,
        "transferBytes": 290275,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290275,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "medium",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "medium",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          }
        ]
      },
      "redundancy": {
        "score": 66,
        "urgency": "high",
        "transferBytes": 2210536,
        "estimatedRedundantBytes": 1742097,
        "redundancyRatio": 0.7880880474237922,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 1195646,
            "displayValue": "Est savings of 1,168 KiB"
          },
          {
            "auditId": "unused-javascript",
            "title": "Reduce unused JavaScript",
            "savingsBytes": 546451,
            "displayValue": "Est savings of 534 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "high",
            "estimatedSavingsBytes": 1195646,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce unused javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 546451,
            "auditId": "unused-javascript",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Enable and verify text compression",
            "urgency": "medium",
            "estimatedSavingsBytes": 1313541,
            "auditId": "uses-text-compression",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 47,
        "urgency": "high",
        "totalTransferBytes": 2210536,
        "heavyRequestCount": 6,
        "heavyBytes": 1925493,
        "heavyRatio": 0.8710525411031532,
        "heavyRequests": [
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "transferSize": 1177193,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "transferSize": 254418,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "transferSize": 159823,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "transferSize": 145490,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-4YNNM3J1E0&cx=c&gtm=4e63q0h2",
            "transferSize": 144785,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/libs/jquery.mCustomScrollbar.css",
            "transferSize": 43784,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 1220977
          },
          {
            "resourceType": "script",
            "count": 3,
            "transferBytes": 544693
          },
          {
            "resourceType": "image",
            "count": 1,
            "transferBytes": 159823
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "administracion.gob.es",
            "count": 4,
            "transferBytes": 1635218
          },
          {
            "domain": "www.googletagmanager.com",
            "count": 2,
            "transferBytes": 290275
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Lazy-load offscreen images and media galleries",
            "urgency": "medium",
            "estimatedSavingsBytes": 104193,
            "strategy": "Load imagery only when it enters the viewport or when a user opens the relevant section.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Split JavaScript by route or interaction",
            "urgency": "high",
            "estimatedSavingsBytes": 546451,
            "strategy": "Move non-critical bundles behind route-level or event-driven imports so they are only fetched on demand.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy stylesheet asset from administracion.gob.es",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "strategy": "Split this stylesheet so component-specific CSS is delivered only when the component is rendered.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 254418,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0,
          "displayValue": "12.1 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 12.1 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": 0.01,
          "displayValue": "13.8 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- Current value: 13.8 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": 0,
          "displayValue": "Est savings of 534 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- Current value: Est savings of 534 KiB\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 1,168 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 1,168 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 9,010 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 9,010 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": 0,
          "displayValue": "Est savings of 1,283 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- Current value: Est savings of 1,283 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 124 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 124 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 7 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- Current value: Est savings of 7 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 102 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- Current value: Est savings of 102 KiB\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://administracion.gob.es/pag_Home/ca/Tu-espacio-europeo/derechos-obligaciones/empresas/inicio-gestion-cierre/derechos/patentes-marcas/observancia",
      "status": "ok",
      "finalUrl": "https://administracion.gob.es/pag_Home/ca/Tu-espacio-europeo/derechos-obligaciones/empresas/inicio-gestion-cierre/derechos/patentes-marcas/observancia",
      "performanceScore": 0.55,
      "bestPracticesScore": 0.79,
      "transferBytes": 2191181,
      "co2Grams": 0.8394006851334002,
      "greenWeb": {
        "page": {
          "hostname": "administracion.gob.es",
          "checked": true,
          "status": "not-green",
          "green": false,
          "hostedBy": null,
          "hostedByWebsite": null,
          "listedProvider": null,
          "partner": null,
          "modified": "2026-03-29T13:38:28.588564",
          "supportingDocuments": [],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/administracion.gob.es",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290071,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "not-green",
          "externalOriginCount": 1,
          "greenCount": 1,
          "notGreenCount": 1,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 70,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/buscador/buscadorsimple.htm|input|text|q|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "q",
            "formContext": "form|get|/buscador/buscadorsimple.htm",
            "hasLabel": false,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 70,
              "urgency": "high",
              "issues": [
                "Missing associated label",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add a programmatic label using <label>, aria-label, or aria-labelledby.",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "Missing associated label",
            "urgency": "high",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 25,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": true,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": false,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Lucha contra la falsificación - Patentes y marcas - Derechos de propiedad industrial e intelectual - Puesta en marcha, gestión y cierre de una empresa - Empresas - Tus derechos y obligaciones en la UE - Tu espacio europeo - Punto de Acceso General",
          "lang": "ca",
          "charset": "",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Conoce la lucha contra la falsificación",
          "robots": "all",
          "canonical": "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/empresas/inicio-gestion-cierre/derechos/patentes-marcas/observancia",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 29,
          "tabletSmallTapTargets": 61,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 399,
            "viewportHeight": 864,
            "contentWidth": 399,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 29,
            "oversizedMedia": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 829,
            "viewportHeight": 1193,
            "contentWidth": 829,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 61,
            "oversizedMedia": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 29 small targets on mobile and 61 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 31,
        "urgency": "medium",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": false,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "connection": "Keep-Alive",
            "content-encoding": "gzip",
            "content-type": "text/html;charset=UTF-8",
            "date": "Mon, 30 Mar 2026 00:40:10 GMT",
            "keep-alive": "timeout=15, max=500",
            "referrer-policy": "origin-when-cross-origin,strict-origin-when-cross-origin",
            "server": "Microsoft-IIS/5.0",
            "set-cookie": "VISITOR=returning; Path=/pag_Home/ca/Tu-espacio-europeo/derechos-obligaciones/empresas; HttpOnly; Secure; SameSite=None\nTS01a8e1d0=01d9c3d318a8df60fb78bd16dbecd479f3574b53af6307f3292d4b0537431a42ad8b1305344a33bb9d19322e073c125f3da6a1aa230810e74a9b77ed3f2d939eabdc5aec9e207a068392e4d311a36d140afac2ba85; Path=/; HttpOnly; Secure; SameSite=None\nTS013701fe=01d9c3d3183d0ab5e35f0a4d3b0e06f02e6973180380529b1b9ba56384d07a19b66567890ae44783a444bdd5d48d6a967bacc4b9ad4bff902aea9909935fb9326af3d6d004f98a4d48eaff3a52021502918d296d1fe81761193e34385adc30c5a064c0078b; path=/pag_Home/ca/Tu-espacio-europeo/derechos-obligaciones/empresas; HttpOnly; Secure; SameSite=None",
            "strict-transport-security": "max-age=63072000; preload",
            "transfer-encoding": "chunked",
            "vary": "Accept-Encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1;mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add a Content-Security-Policy header",
            "urgency": "high",
            "detail": "Add an appropriate CSP to reduce script injection and resource loading risk."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 30,
        "urgency": "medium",
        "origin": "https://administracion.gob.es",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://administracion.gob.es/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/favicon.ico",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 2403496.2,
        "checks": {
          "hasEffectiveTextCompression": false
        },
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "estimatedSavingsBytes": 1313541,
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "estimatedSavingsBytes": 891965,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "estimatedSavingsBytes": 126680.2,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "estimatedSavingsBytes": 63759,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "estimatedSavingsBytes": 7551,
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings."
          }
        ],
        "recommendations": [
          {
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
          },
          {
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
          },
          {
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 7.37 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 4230268.2,
        "totalEstimatedBlockingMs": 9338,
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable text compression",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat.",
            "estimatedSavingsBytes": 1313541,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,283 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-text-compression"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 1197067,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,169 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 891965,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 871 KiB",
            "urgency": "high",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unused-javascript",
            "title": "Remove unused JavaScript",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code.",
            "estimatedSavingsBytes": 531878,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 519 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-javascript"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9338,
            "displayValue": "Est savings of 9,340 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 126680.2,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 124 KiB",
            "urgency": "medium",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "offscreen-images",
            "title": "Lazy-load offscreen images",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed.",
            "estimatedSavingsBytes": 91115,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 89 KiB",
            "urgency": "medium",
            "sourceAuditId": "offscreen-images"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 63759,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 62 KiB",
            "urgency": "medium",
            "sourceAuditId": "unminified-javascript"
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss.",
            "estimatedSavingsBytes": 7551,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-optimized-images"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 6712,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-responsive-images"
          }
        ],
        "recommendations": [
          {
            "title": "Enable text compression",
            "urgency": "high",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat. Estimated byte savings: 1.25 MB."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "high",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 1.14 MB."
          },
          {
            "title": "Minify CSS",
            "urgency": "high",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 871.06 KB."
          },
          {
            "title": "Remove unused JavaScript",
            "urgency": "high",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code. Estimated byte savings: 519.41 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 9338 ms."
          },
          {
            "title": "Serve images in next-gen formats",
            "urgency": "medium",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 123.71 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1883685
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.80 MB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.80 MB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 30,
        "urgency": "high",
        "transferBytes": 2191181,
        "css": {
          "unusedBytes": 1197067,
          "ratio": 0.546311327087995,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 531878,
          "duplicatedBytes": 0,
          "ratio": 0.24273576669385138,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "high",
            "estimatedSavingsBytes": 1197067,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          },
          {
            "area": "javascript",
            "title": "Remove unused JavaScript and feature bundles",
            "urgency": "high",
            "estimatedSavingsBytes": 531878,
            "strategy": "Drop unused packages and feature code, or move them behind route-level or interaction-triggered imports.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 35,
        "urgency": "high",
        "transferBytes": 2191181,
        "estimatedDeferrableBytes": 1820060,
        "renderBlockingMs": 9338,
        "breakdown": {
          "offscreenImageSavings": 91115,
          "unusedJavascriptSavings": 531878,
          "unusedCssSavings": 1197067
        },
        "candidates": [
          {
            "title": "Lazy-load offscreen images",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 91115,
            "strategy": "Load below-the-fold images only when they approach the viewport.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Defer non-critical JavaScript",
            "area": "javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 531878,
            "strategy": "Split bundles and load feature code on interaction or route transition.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1197067,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9338,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy stylesheet from administracion.gob.es",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from administracion.gob.es",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 254418,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from administracion.gob.es",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 159817,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.googletagmanager.com",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 145383,
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 34,
        "urgency": "medium",
        "providerCount": 1,
        "requestCount": 2,
        "transferBytes": 290071,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290071,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "medium",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "medium",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          }
        ]
      },
      "redundancy": {
        "score": 66,
        "urgency": "high",
        "transferBytes": 2191181,
        "estimatedRedundantBytes": 1728945,
        "redundancyRatio": 0.7890470937818465,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 1197067,
            "displayValue": "Est savings of 1,169 KiB"
          },
          {
            "auditId": "unused-javascript",
            "title": "Reduce unused JavaScript",
            "savingsBytes": 531878,
            "displayValue": "Est savings of 519 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "high",
            "estimatedSavingsBytes": 1197067,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce unused javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 531878,
            "auditId": "unused-javascript",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Enable and verify text compression",
            "urgency": "medium",
            "estimatedSavingsBytes": 1313541,
            "auditId": "uses-text-compression",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 47,
        "urgency": "high",
        "totalTransferBytes": 2191181,
        "heavyRequestCount": 6,
        "heavyBytes": 1925283,
        "heavyRatio": 0.8786508280237917,
        "heavyRequests": [
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "transferSize": 1177193,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "transferSize": 254418,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "transferSize": 159817,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "transferSize": 145383,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-4YNNM3J1E0&cx=c&gtm=4e63p1",
            "transferSize": 144688,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/libs/jquery.mCustomScrollbar.css",
            "transferSize": 43784,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 1220977
          },
          {
            "resourceType": "script",
            "count": 3,
            "transferBytes": 544489
          },
          {
            "resourceType": "image",
            "count": 1,
            "transferBytes": 159817
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "administracion.gob.es",
            "count": 4,
            "transferBytes": 1635212
          },
          {
            "domain": "www.googletagmanager.com",
            "count": 2,
            "transferBytes": 290071
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Lazy-load offscreen images and media galleries",
            "urgency": "medium",
            "estimatedSavingsBytes": 91115,
            "strategy": "Load imagery only when it enters the viewport or when a user opens the relevant section.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Split JavaScript by route or interaction",
            "urgency": "high",
            "estimatedSavingsBytes": 531878,
            "strategy": "Move non-critical bundles behind route-level or event-driven imports so they are only fetched on demand.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy stylesheet asset from administracion.gob.es",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "strategy": "Split this stylesheet so component-specific CSS is delivered only when the component is rendered.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 254418,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 159817,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0,
          "displayValue": "12.0 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 12.0 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": 0.01,
          "displayValue": "14.6 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- Current value: 14.6 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": 0,
          "displayValue": "Est savings of 519 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- Current value: Est savings of 519 KiB\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 1,169 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 1,169 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 9,340 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 9,340 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": 0,
          "displayValue": "Est savings of 1,283 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- Current value: Est savings of 1,283 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 124 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 124 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 7 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- Current value: Est savings of 7 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 89 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- Current value: Est savings of 89 KiB\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://administracion.gob.es/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/empresas/contratacion-publica/comunicar-irregularidad",
      "status": "ok",
      "finalUrl": "https://administracion.gob.es/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/empresas/contratacion-publica/comunicar-irregularidad",
      "performanceScore": 0.56,
      "bestPracticesScore": 0.79,
      "transferBytes": 2235470,
      "co2Grams": 0.856366977258,
      "greenWeb": {
        "page": {
          "hostname": "administracion.gob.es",
          "checked": true,
          "status": "not-green",
          "green": false,
          "hostedBy": null,
          "hostedByWebsite": null,
          "listedProvider": null,
          "partner": null,
          "modified": "2026-03-29T13:38:28.588564",
          "supportingDocuments": [],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/administracion.gob.es",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290071,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "not-green",
          "externalOriginCount": 1,
          "greenCount": 1,
          "notGreenCount": 1,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 70,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/buscador/buscadorsimple.htm|input|text|q|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "q",
            "formContext": "form|get|/buscador/buscadorsimple.htm",
            "hasLabel": false,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 70,
              "urgency": "high",
              "issues": [
                "Missing associated label",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add a programmatic label using <label>, aria-label, or aria-labelledby.",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "Missing associated label",
            "urgency": "high",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 35,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": false,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Public procurement: Notification of irregularities - Public contracts - Business - Your rights and obligations in the EU - Tu espacio europeo - Punto de Acceso General",
          "lang": "en",
          "charset": "",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Know how to apply for review of adopted decisions, who can apply for review and within what time limits.",
          "robots": "all",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 32,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 42,
          "tabletSmallTapTargets": 69,
          "fixedWidthOffenders": 1,
          "oversizedMedia": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 399,
            "viewportHeight": 864,
            "contentWidth": 399,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 1,
            "smallTapTargets": 42,
            "oversizedMedia": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 829,
            "viewportHeight": 1193,
            "contentWidth": 829,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 69,
            "oversizedMedia": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 42 small targets on mobile and 69 on tablet."
          },
          {
            "title": "Refactor fixed-width components",
            "urgency": "medium",
            "detail": "1 element(s) exceeded viewport width in tested layouts; use responsive component constraints."
          }
        ]
      },
      "securityLight": {
        "score": 31,
        "urgency": "medium",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": false,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "connection": "Keep-Alive",
            "content-encoding": "gzip",
            "content-type": "text/html;charset=UTF-8",
            "date": "Mon, 30 Mar 2026 00:40:33 GMT",
            "keep-alive": "timeout=15, max=500",
            "referrer-policy": "origin-when-cross-origin,strict-origin-when-cross-origin",
            "server": "Microsoft-IIS/5.0",
            "set-cookie": "VISITOR=returning; Path=/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/empresas; HttpOnly; Secure; SameSite=None\nTS01a8e1d0=01d9c3d318675a9157d30da37cb02235ed5c5a546da76ff9a05ac14472dedf18431353a89662ae0b9455010cf4503c85157db36d672b9513dc51166213d651a68ae2bdd08db8841f1b06602086ef18d6b8551f389e; Path=/; HttpOnly; Secure; SameSite=None\nTS01e4c404=01d9c3d3183d0ab5e35f0a4d3b0e06f02e6973180380529b1b9ba56384d07a19b66567890ae44783a444bdd5d48d6a967bacc4b9ad4bff902aea9909935fb9326af3d6d004f98a4d48eaff3a52021502918d296d1fe81761193e34385adc30c5a064c0078b; path=/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/empresas; HttpOnly; Secure; SameSite=None",
            "strict-transport-security": "max-age=63072000; preload",
            "transfer-encoding": "chunked",
            "vary": "Accept-Encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1;mode=block",
            "traceresponse": "00-ae43eea80c8fe96504f67a2907f3f0a7-77640e06b6f40443-01",
            "x-dt-tracestate": "acd5d8fe-344161ca@dt"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add a Content-Security-Policy header",
            "urgency": "high",
            "detail": "Add an appropriate CSP to reduce script injection and resource loading risk."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 30,
        "urgency": "medium",
        "origin": "https://administracion.gob.es",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://administracion.gob.es/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/favicon.ico",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 2403496.2,
        "checks": {
          "hasEffectiveTextCompression": false
        },
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "estimatedSavingsBytes": 1313541,
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "estimatedSavingsBytes": 891965,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "estimatedSavingsBytes": 126680.2,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "estimatedSavingsBytes": 63759,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "estimatedSavingsBytes": 7551,
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings."
          }
        ],
        "recommendations": [
          {
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
          },
          {
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
          },
          {
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 7.37 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 4273537.2,
        "totalEstimatedBlockingMs": 9221,
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable text compression",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat.",
            "estimatedSavingsBytes": 1313541,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,283 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-text-compression"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 1195584,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,168 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 891965,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 871 KiB",
            "urgency": "high",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unused-javascript",
            "title": "Remove unused JavaScript",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code.",
            "estimatedSavingsBytes": 545499,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 533 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-javascript"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9221,
            "displayValue": "Est savings of 9,220 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 126680.2,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 124 KiB",
            "urgency": "medium",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "offscreen-images",
            "title": "Lazy-load offscreen images",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed.",
            "estimatedSavingsBytes": 122246,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 119 KiB",
            "urgency": "medium",
            "sourceAuditId": "offscreen-images"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 63759,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 62 KiB",
            "urgency": "medium",
            "sourceAuditId": "unminified-javascript"
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss.",
            "estimatedSavingsBytes": 7551,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-optimized-images"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 6712,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-responsive-images"
          }
        ],
        "recommendations": [
          {
            "title": "Enable text compression",
            "urgency": "high",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat. Estimated byte savings: 1.25 MB."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "high",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 1.14 MB."
          },
          {
            "title": "Minify CSS",
            "urgency": "high",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 871.06 KB."
          },
          {
            "title": "Remove unused JavaScript",
            "urgency": "high",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code. Estimated byte savings: 532.71 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 9221 ms."
          },
          {
            "title": "Serve images in next-gen formats",
            "urgency": "medium",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 123.71 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1925698
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.84 MB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.84 MB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 30,
        "urgency": "high",
        "transferBytes": 2235470,
        "css": {
          "unusedBytes": 1195584,
          "ratio": 0.5348244440766371,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 545499,
          "duplicatedBytes": 0,
          "ratio": 0.24401982580844297,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "high",
            "estimatedSavingsBytes": 1195584,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          },
          {
            "area": "javascript",
            "title": "Remove unused JavaScript and feature bundles",
            "urgency": "high",
            "estimatedSavingsBytes": 545499,
            "strategy": "Drop unused packages and feature code, or move them behind route-level or interaction-triggered imports.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 35,
        "urgency": "high",
        "transferBytes": 2235470,
        "estimatedDeferrableBytes": 1863329,
        "renderBlockingMs": 9221,
        "breakdown": {
          "offscreenImageSavings": 122246,
          "unusedJavascriptSavings": 545499,
          "unusedCssSavings": 1195584
        },
        "candidates": [
          {
            "title": "Lazy-load offscreen images",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 122246,
            "strategy": "Load below-the-fold images only when they approach the viewport.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Defer non-critical JavaScript",
            "area": "javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 545499,
            "strategy": "Split bundles and load feature code on interaction or route transition.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1195584,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9221,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy stylesheet from administracion.gob.es",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from administracion.gob.es",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 254417,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from administracion.gob.es",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 159817,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.googletagmanager.com",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 145383,
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 34,
        "urgency": "medium",
        "providerCount": 1,
        "requestCount": 2,
        "transferBytes": 290071,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290071,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "medium",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "medium",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          }
        ]
      },
      "redundancy": {
        "score": 68,
        "urgency": "high",
        "transferBytes": 2235470,
        "estimatedRedundantBytes": 1741083,
        "redundancyRatio": 0.77884426988508,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 1195584,
            "displayValue": "Est savings of 1,168 KiB"
          },
          {
            "auditId": "unused-javascript",
            "title": "Reduce unused JavaScript",
            "savingsBytes": 545499,
            "displayValue": "Est savings of 533 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "high",
            "estimatedSavingsBytes": 1195584,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce unused javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 545499,
            "auditId": "unused-javascript",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Enable and verify text compression",
            "urgency": "medium",
            "estimatedSavingsBytes": 1313541,
            "auditId": "uses-text-compression",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 46,
        "urgency": "high",
        "totalTransferBytes": 2235470,
        "heavyRequestCount": 6,
        "heavyBytes": 1925282,
        "heavyRatio": 0.8612426022268248,
        "heavyRequests": [
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "transferSize": 1177193,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "transferSize": 254417,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "transferSize": 159817,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "transferSize": 145383,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-4YNNM3J1E0&cx=c&gtm=4e63p1",
            "transferSize": 144688,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/libs/jquery.mCustomScrollbar.css",
            "transferSize": 43784,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 1220977
          },
          {
            "resourceType": "script",
            "count": 3,
            "transferBytes": 544488
          },
          {
            "resourceType": "image",
            "count": 1,
            "transferBytes": 159817
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "administracion.gob.es",
            "count": 4,
            "transferBytes": 1635211
          },
          {
            "domain": "www.googletagmanager.com",
            "count": 2,
            "transferBytes": 290071
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Lazy-load offscreen images and media galleries",
            "urgency": "medium",
            "estimatedSavingsBytes": 122246,
            "strategy": "Load imagery only when it enters the viewport or when a user opens the relevant section.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Split JavaScript by route or interaction",
            "urgency": "high",
            "estimatedSavingsBytes": 545499,
            "strategy": "Move non-critical bundles behind route-level or event-driven imports so they are only fetched on demand.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy stylesheet asset from administracion.gob.es",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "strategy": "Split this stylesheet so component-specific CSS is delivered only when the component is rendered.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 254417,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 159817,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0,
          "displayValue": "12.3 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 12.3 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": 0.05,
          "displayValue": "11.4 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- Current value: 11.4 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": 0,
          "displayValue": "Est savings of 533 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- Current value: Est savings of 533 KiB\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 1,168 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 1,168 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 9,220 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 9,220 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": 0,
          "displayValue": "Est savings of 1,283 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- Current value: Est savings of 1,283 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 124 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 124 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 7 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- Current value: Est savings of 7 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 119 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- Current value: Est savings of 119 KiB\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://administracion.gob.es/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/trabajo-jubilacion/condiciones-trabajo/finalizacion-contrato",
      "status": "ok",
      "finalUrl": "https://administracion.gob.es/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/trabajo-jubilacion/condiciones-trabajo/finalizacion-contrato",
      "performanceScore": 0.55,
      "bestPracticesScore": 0.79,
      "transferBytes": 2200996,
      "co2Grams": 0.8431606290744003,
      "greenWeb": {
        "page": {
          "hostname": "administracion.gob.es",
          "checked": true,
          "status": "not-green",
          "green": false,
          "hostedBy": null,
          "hostedByWebsite": null,
          "listedProvider": null,
          "partner": null,
          "modified": "2026-03-29T13:38:28.588564",
          "supportingDocuments": [],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/administracion.gob.es",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290072,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "not-green",
          "externalOriginCount": 1,
          "greenCount": 1,
          "notGreenCount": 1,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 70,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/buscador/buscadorsimple.htm|input|text|q|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "q",
            "formContext": "form|get|/buscador/buscadorsimple.htm",
            "hasLabel": false,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 70,
              "urgency": "high",
              "issues": [
                "Missing associated label",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add a programmatic label using <label>, aria-label, or aria-labelledby.",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "Missing associated label",
            "urgency": "high",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 35,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": false,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "End of contract, resignations and dismissals - Conditions of employment, including for posted workers - Work and retirement - Citizens - Your rights and obligations in the EU - Tu espacio europeo - Punto de Acceso General",
          "lang": "en",
          "charset": "",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Information on termination of employment contracts, resignations and dismissals.",
          "robots": "all",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 32,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 34,
          "tabletSmallTapTargets": 63,
          "fixedWidthOffenders": 1,
          "oversizedMedia": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 399,
            "viewportHeight": 864,
            "contentWidth": 399,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 1,
            "smallTapTargets": 34,
            "oversizedMedia": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 829,
            "viewportHeight": 1193,
            "contentWidth": 829,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 63,
            "oversizedMedia": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 34 small targets on mobile and 63 on tablet."
          },
          {
            "title": "Refactor fixed-width components",
            "urgency": "medium",
            "detail": "1 element(s) exceeded viewport width in tested layouts; use responsive component constraints."
          }
        ]
      },
      "securityLight": {
        "score": 31,
        "urgency": "medium",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": false,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "connection": "Keep-Alive",
            "content-encoding": "gzip",
            "content-type": "text/html;charset=UTF-8",
            "date": "Mon, 30 Mar 2026 00:40:57 GMT",
            "keep-alive": "timeout=15, max=500",
            "referrer-policy": "origin-when-cross-origin,strict-origin-when-cross-origin",
            "server": "Microsoft-IIS/5.0",
            "set-cookie": "VISITOR=returning; Path=/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/ciudadanos; HttpOnly; Secure; SameSite=None\nTS01a8e1d0=01d9c3d318675a9157d30da37cb02235ed5c5a546da76ff9a05ac14472dedf18431353a89662ae0b9455010cf4503c85157db36d672b9513dc51166213d651a68ae2bdd08db8841f1b06602086ef18d6b8551f389e; Path=/; HttpOnly; Secure; SameSite=None\nTS01cc21ed=01d9c3d31875eb4ee065abf109a5ef141663ea9e5662999d88da62791f603954b0657e3ad206abe0e840a1f31af532847905d0382b90b7a84781f287b0f8ea376c270e95758790e5f992ab8a462f1118463bf9b8565956db104bfe20987b3f54c98e7c3998; path=/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/ciudadanos; HttpOnly; Secure; SameSite=None",
            "strict-transport-security": "max-age=63072000; preload",
            "transfer-encoding": "chunked",
            "vary": "Accept-Encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1;mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add a Content-Security-Policy header",
            "urgency": "high",
            "detail": "Add an appropriate CSP to reduce script injection and resource loading risk."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 30,
        "urgency": "medium",
        "origin": "https://administracion.gob.es",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://administracion.gob.es/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/favicon.ico",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 2403496.2,
        "checks": {
          "hasEffectiveTextCompression": false
        },
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "estimatedSavingsBytes": 1313541,
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "estimatedSavingsBytes": 891965,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "estimatedSavingsBytes": 126680.2,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "estimatedSavingsBytes": 63759,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "estimatedSavingsBytes": 7551,
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings."
          }
        ],
        "recommendations": [
          {
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
          },
          {
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
          },
          {
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 7.37 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 4249628.2,
        "totalEstimatedBlockingMs": 9260,
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable text compression",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat.",
            "estimatedSavingsBytes": 1313541,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,283 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-text-compression"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 1195865,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,168 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 891965,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 871 KiB",
            "urgency": "high",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unused-javascript",
            "title": "Remove unused JavaScript",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code.",
            "estimatedSavingsBytes": 546746,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 534 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-javascript"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9260,
            "displayValue": "Est savings of 9,260 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 126680.2,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 124 KiB",
            "urgency": "medium",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "offscreen-images",
            "title": "Lazy-load offscreen images",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed.",
            "estimatedSavingsBytes": 96809,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 95 KiB",
            "urgency": "medium",
            "sourceAuditId": "offscreen-images"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 63759,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 62 KiB",
            "urgency": "medium",
            "sourceAuditId": "unminified-javascript"
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss.",
            "estimatedSavingsBytes": 7551,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-optimized-images"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 6712,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-responsive-images"
          }
        ],
        "recommendations": [
          {
            "title": "Enable text compression",
            "urgency": "high",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat. Estimated byte savings: 1.25 MB."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "high",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 1.14 MB."
          },
          {
            "title": "Minify CSS",
            "urgency": "high",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 871.06 KB."
          },
          {
            "title": "Remove unused JavaScript",
            "urgency": "high",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code. Estimated byte savings: 533.93 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 9260 ms."
          },
          {
            "title": "Serve images in next-gen formats",
            "urgency": "medium",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 123.71 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1893678
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.81 MB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.81 MB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 30,
        "urgency": "high",
        "transferBytes": 2200996,
        "css": {
          "unusedBytes": 1195865,
          "ratio": 0.5433290201345209,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 546746,
          "duplicatedBytes": 0,
          "ratio": 0.24840844781180885,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "high",
            "estimatedSavingsBytes": 1195865,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          },
          {
            "area": "javascript",
            "title": "Remove unused JavaScript and feature bundles",
            "urgency": "high",
            "estimatedSavingsBytes": 546746,
            "strategy": "Drop unused packages and feature code, or move them behind route-level or interaction-triggered imports.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 35,
        "urgency": "high",
        "transferBytes": 2200996,
        "estimatedDeferrableBytes": 1839420,
        "renderBlockingMs": 9260,
        "breakdown": {
          "offscreenImageSavings": 96809,
          "unusedJavascriptSavings": 546746,
          "unusedCssSavings": 1195865
        },
        "candidates": [
          {
            "title": "Lazy-load offscreen images",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 96809,
            "strategy": "Load below-the-fold images only when they approach the viewport.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Defer non-critical JavaScript",
            "area": "javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 546746,
            "strategy": "Split bundles and load feature code on interaction or route transition.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1195865,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9260,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy stylesheet from administracion.gob.es",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from administracion.gob.es",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 254411,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from administracion.gob.es",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 159928,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.googletagmanager.com",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 145383,
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 34,
        "urgency": "medium",
        "providerCount": 1,
        "requestCount": 2,
        "transferBytes": 290072,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290072,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "medium",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "medium",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          }
        ]
      },
      "redundancy": {
        "score": 66,
        "urgency": "high",
        "transferBytes": 2200996,
        "estimatedRedundantBytes": 1742611,
        "redundancyRatio": 0.7917374679463297,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 1195865,
            "displayValue": "Est savings of 1,168 KiB"
          },
          {
            "auditId": "unused-javascript",
            "title": "Reduce unused JavaScript",
            "savingsBytes": 546746,
            "displayValue": "Est savings of 534 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "high",
            "estimatedSavingsBytes": 1195865,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce unused javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 546746,
            "auditId": "unused-javascript",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Enable and verify text compression",
            "urgency": "medium",
            "estimatedSavingsBytes": 1313541,
            "auditId": "uses-text-compression",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 47,
        "urgency": "high",
        "totalTransferBytes": 2200996,
        "heavyRequestCount": 6,
        "heavyBytes": 1925388,
        "heavyRatio": 0.87478032672481,
        "heavyRequests": [
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "transferSize": 1177193,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "transferSize": 254411,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "transferSize": 159928,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "transferSize": 145383,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-4YNNM3J1E0&cx=c&gtm=4e63p1",
            "transferSize": 144689,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/libs/jquery.mCustomScrollbar.css",
            "transferSize": 43784,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 1220977
          },
          {
            "resourceType": "script",
            "count": 3,
            "transferBytes": 544483
          },
          {
            "resourceType": "image",
            "count": 1,
            "transferBytes": 159928
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "administracion.gob.es",
            "count": 4,
            "transferBytes": 1635316
          },
          {
            "domain": "www.googletagmanager.com",
            "count": 2,
            "transferBytes": 290072
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Lazy-load offscreen images and media galleries",
            "urgency": "medium",
            "estimatedSavingsBytes": 96809,
            "strategy": "Load imagery only when it enters the viewport or when a user opens the relevant section.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Split JavaScript by route or interaction",
            "urgency": "high",
            "estimatedSavingsBytes": 546746,
            "strategy": "Move non-critical bundles behind route-level or event-driven imports so they are only fetched on demand.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy stylesheet asset from administracion.gob.es",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "strategy": "Split this stylesheet so component-specific CSS is delivered only when the component is rendered.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 254411,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 159928,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0,
          "displayValue": "12.0 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 12.0 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": 0.01,
          "displayValue": "14.8 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- Current value: 14.8 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": 0,
          "displayValue": "Est savings of 534 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- Current value: Est savings of 534 KiB\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 1,168 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 1,168 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 9,260 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 9,260 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": 0,
          "displayValue": "Est savings of 1,283 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- Current value: Est savings of 1,283 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 124 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 124 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 7 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- Current value: Est savings of 7 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 95 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- Current value: Est savings of 95 KiB\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/empresas/servicios/permisos",
      "status": "ok",
      "finalUrl": "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/empresas/servicios/permisos",
      "performanceScore": 0.56,
      "bestPracticesScore": 0.79,
      "transferBytes": 2229589,
      "co2Grams": 0.8541140755446001,
      "greenWeb": {
        "page": {
          "hostname": "administracion.gob.es",
          "checked": true,
          "status": "not-green",
          "green": false,
          "hostedBy": null,
          "hostedByWebsite": null,
          "listedProvider": null,
          "partner": null,
          "modified": "2026-03-29T13:38:28.588564",
          "supportingDocuments": [],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/administracion.gob.es",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290070,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "not-green",
          "externalOriginCount": 1,
          "greenCount": 1,
          "notGreenCount": 1,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 70,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/buscador/buscadorsimple.htm|input|text|q|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "q",
            "formContext": "form|get|/buscador/buscadorsimple.htm",
            "hasLabel": false,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 70,
              "urgency": "high",
              "issues": [
                "Missing associated label",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add a programmatic label using <label>, aria-label, or aria-labelledby.",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "Missing associated label",
            "urgency": "high",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 35,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": false,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Licencias o permisos para poner en marcha una empresa - Servicios - Empresas - Tus derechos y obligaciones en la UE - Tu espacio europeo - Punto de Acceso General",
          "lang": "es",
          "charset": "",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Conoce las licencias o permisos y trámites administrativos necesarios para la puesta en marcha de una empresa, asociaciones, organizaciones de asistencia y Ventanilla Única de Servicios",
          "robots": "all",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 36,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 45,
          "tabletSmallTapTargets": 77,
          "fixedWidthOffenders": 3,
          "oversizedMedia": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 399,
            "viewportHeight": 864,
            "contentWidth": 399,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 3,
            "smallTapTargets": 45,
            "oversizedMedia": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 829,
            "viewportHeight": 1193,
            "contentWidth": 829,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 77,
            "oversizedMedia": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 45 small targets on mobile and 77 on tablet."
          },
          {
            "title": "Refactor fixed-width components",
            "urgency": "medium",
            "detail": "3 element(s) exceeded viewport width in tested layouts; use responsive component constraints."
          }
        ]
      },
      "securityLight": {
        "score": 31,
        "urgency": "medium",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": false,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "connection": "Keep-Alive",
            "content-encoding": "gzip",
            "content-length": "16587",
            "content-type": "text/html;charset=UTF-8",
            "date": "Mon, 30 Mar 2026 00:41:18 GMT",
            "keep-alive": "timeout=15, max=500",
            "referrer-policy": "origin-when-cross-origin,strict-origin-when-cross-origin",
            "server": "Microsoft-IIS/5.0",
            "set-cookie": "VISITOR=returning; Path=/pag_Home/Tu-espacio-europeo/derechos-obligaciones/empresas/servicios; HttpOnly; Secure; SameSite=None\nTS01a8e1d0=01d9c3d318675a9157d30da37cb02235ed5c5a546da76ff9a05ac14472dedf18431353a89662ae0b9455010cf4503c85157db36d672b9513dc51166213d651a68ae2bdd08db8841f1b06602086ef18d6b8551f389e; Path=/; HttpOnly; Secure; SameSite=None\nTS0160c500=01d9c3d318c7d1cb0bebf53c78d5e2cd07886a7b11a76ff9a05ac14472dedf18431353a89662ae0b9455010cf4503c85157db36d672b9513dc51166213d651a68ae2bdd08d31f5962ba3c37b755afd0cf0640a64fb0b9c9d0b5d48d8152625567c42b16753; path=/pag_Home/Tu-espacio-europeo/derechos-obligaciones/empresas/servicios; HttpOnly; Secure; SameSite=None",
            "strict-transport-security": "max-age=63072000; preload",
            "vary": "Accept-Encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1;mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add a Content-Security-Policy header",
            "urgency": "high",
            "detail": "Add an appropriate CSP to reduce script injection and resource loading risk."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 30,
        "urgency": "medium",
        "origin": "https://administracion.gob.es",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://administracion.gob.es/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/favicon.ico",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 2403496.2,
        "checks": {
          "hasEffectiveTextCompression": false
        },
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "estimatedSavingsBytes": 1313541,
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "estimatedSavingsBytes": 891965,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "estimatedSavingsBytes": 126680.2,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "estimatedSavingsBytes": 63759,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "estimatedSavingsBytes": 7551,
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings."
          }
        ],
        "recommendations": [
          {
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
          },
          {
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
          },
          {
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 7.37 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 4267715.2,
        "totalEstimatedBlockingMs": 9107,
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable text compression",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat.",
            "estimatedSavingsBytes": 1313541,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,283 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-text-compression"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 1196116,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,168 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 891965,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 871 KiB",
            "urgency": "high",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unused-javascript",
            "title": "Remove unused JavaScript",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code.",
            "estimatedSavingsBytes": 546213,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 533 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-javascript"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9107,
            "displayValue": "Est savings of 9,110 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 126680.2,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 124 KiB",
            "urgency": "medium",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "offscreen-images",
            "title": "Lazy-load offscreen images",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed.",
            "estimatedSavingsBytes": 115178,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 112 KiB",
            "urgency": "medium",
            "sourceAuditId": "offscreen-images"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 63759,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 62 KiB",
            "urgency": "medium",
            "sourceAuditId": "unminified-javascript"
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss.",
            "estimatedSavingsBytes": 7551,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-optimized-images"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 6712,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-responsive-images"
          }
        ],
        "recommendations": [
          {
            "title": "Enable text compression",
            "urgency": "high",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat. Estimated byte savings: 1.25 MB."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "high",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 1.14 MB."
          },
          {
            "title": "Minify CSS",
            "urgency": "high",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 871.06 KB."
          },
          {
            "title": "Remove unused JavaScript",
            "urgency": "high",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code. Estimated byte savings: 533.41 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 9107 ms."
          },
          {
            "title": "Serve images in next-gen formats",
            "urgency": "medium",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 123.71 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1919871
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.83 MB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.83 MB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 30,
        "urgency": "high",
        "transferBytes": 2229589,
        "css": {
          "unusedBytes": 1196116,
          "ratio": 0.5364737626531167,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 546213,
          "duplicatedBytes": 0,
          "ratio": 0.2449837167298547,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "high",
            "estimatedSavingsBytes": 1196116,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          },
          {
            "area": "javascript",
            "title": "Remove unused JavaScript and feature bundles",
            "urgency": "high",
            "estimatedSavingsBytes": 546213,
            "strategy": "Drop unused packages and feature code, or move them behind route-level or interaction-triggered imports.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 35,
        "urgency": "high",
        "transferBytes": 2229589,
        "estimatedDeferrableBytes": 1857507,
        "renderBlockingMs": 9107,
        "breakdown": {
          "offscreenImageSavings": 115178,
          "unusedJavascriptSavings": 546213,
          "unusedCssSavings": 1196116
        },
        "candidates": [
          {
            "title": "Lazy-load offscreen images",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 115178,
            "strategy": "Load below-the-fold images only when they approach the viewport.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Defer non-critical JavaScript",
            "area": "javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 546213,
            "strategy": "Split bundles and load feature code on interaction or route transition.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1196116,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9107,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy stylesheet from administracion.gob.es",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from administracion.gob.es",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 254418,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from administracion.gob.es",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 159817,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.googletagmanager.com",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 145384,
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 34,
        "urgency": "medium",
        "providerCount": 1,
        "requestCount": 2,
        "transferBytes": 290070,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290070,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "medium",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "medium",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          }
        ]
      },
      "redundancy": {
        "score": 68,
        "urgency": "high",
        "transferBytes": 2229589,
        "estimatedRedundantBytes": 1742329,
        "redundancyRatio": 0.7814574793829715,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 1196116,
            "displayValue": "Est savings of 1,168 KiB"
          },
          {
            "auditId": "unused-javascript",
            "title": "Reduce unused JavaScript",
            "savingsBytes": 546213,
            "displayValue": "Est savings of 533 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "high",
            "estimatedSavingsBytes": 1196116,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce unused javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 546213,
            "auditId": "unused-javascript",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Enable and verify text compression",
            "urgency": "medium",
            "estimatedSavingsBytes": 1313541,
            "auditId": "uses-text-compression",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 47,
        "urgency": "high",
        "totalTransferBytes": 2229589,
        "heavyRequestCount": 6,
        "heavyBytes": 1925282,
        "heavyRatio": 0.8635143068969213,
        "heavyRequests": [
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "transferSize": 1177193,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "transferSize": 254418,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "transferSize": 159817,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "transferSize": 145384,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-4YNNM3J1E0&cx=c&gtm=4e63p1",
            "transferSize": 144686,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/libs/jquery.mCustomScrollbar.css",
            "transferSize": 43784,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 1220977
          },
          {
            "resourceType": "script",
            "count": 3,
            "transferBytes": 544488
          },
          {
            "resourceType": "image",
            "count": 1,
            "transferBytes": 159817
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "administracion.gob.es",
            "count": 4,
            "transferBytes": 1635212
          },
          {
            "domain": "www.googletagmanager.com",
            "count": 2,
            "transferBytes": 290070
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Lazy-load offscreen images and media galleries",
            "urgency": "medium",
            "estimatedSavingsBytes": 115178,
            "strategy": "Load imagery only when it enters the viewport or when a user opens the relevant section.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Split JavaScript by route or interaction",
            "urgency": "high",
            "estimatedSavingsBytes": 546213,
            "strategy": "Move non-critical bundles behind route-level or event-driven imports so they are only fetched on demand.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy stylesheet asset from administracion.gob.es",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "strategy": "Split this stylesheet so component-specific CSS is delivered only when the component is rendered.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 254418,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 159817,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0,
          "displayValue": "12.2 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 12.2 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": 0.06,
          "displayValue": "11.0 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- Current value: 11.0 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": 0,
          "displayValue": "Est savings of 533 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- Current value: Est savings of 533 KiB\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 1,168 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 1,168 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 9,110 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 9,110 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": 0,
          "displayValue": "Est savings of 1,283 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- Current value: Est savings of 1,283 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 124 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 124 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 7 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- Current value: Est savings of 7 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 112 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- Current value: Est savings of 112 KiB\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://administracion.gob.es/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/viajes/documentos/pasaportes-caducados",
      "status": "ok",
      "finalUrl": "https://administracion.gob.es/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/viajes/documentos/pasaportes-caducados",
      "performanceScore": 0.55,
      "bestPracticesScore": 0.79,
      "transferBytes": 2193619,
      "co2Grams": 0.8403346375866001,
      "greenWeb": {
        "page": {
          "hostname": "administracion.gob.es",
          "checked": true,
          "status": "not-green",
          "green": false,
          "hostedBy": null,
          "hostedByWebsite": null,
          "listedProvider": null,
          "partner": null,
          "modified": "2026-03-29T13:38:28.588564",
          "supportingDocuments": [],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/administracion.gob.es",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290073,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "not-green",
          "externalOriginCount": 1,
          "greenCount": 1,
          "notGreenCount": 1,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 70,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/buscador/buscadorsimple.htm|input|text|q|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "q",
            "formContext": "form|get|/buscador/buscadorsimple.htm",
            "hasLabel": false,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 70,
              "urgency": "high",
              "issues": [
                "Missing associated label",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add a programmatic label using <label>, aria-label, or aria-labelledby.",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "Missing associated label",
            "urgency": "high",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 25,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": true,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": false,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Iraungitako pasaporteak - Behar duzun dokumentuak ebn bidaiatzeko - Viajar dentro de la UE - Ciudadanos - Tus derechos y obligaciones en la UE - Tu espacio europeo - Punto de Acceso General",
          "lang": "eu",
          "charset": "",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Baliozkoak diren penalizazioen edo ondorioak ezagutu pasaporteak, bidaiatu behar da, eta iraungitako pasaporteak, etab.",
          "robots": "all",
          "canonical": "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/viajes/documentos/pasaportes-caducados",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 40,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 33,
          "tabletSmallTapTargets": 64,
          "fixedWidthOffenders": 5,
          "oversizedMedia": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 399,
            "viewportHeight": 864,
            "contentWidth": 399,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 3,
            "smallTapTargets": 33,
            "oversizedMedia": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 829,
            "viewportHeight": 1193,
            "contentWidth": 829,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 2,
            "smallTapTargets": 64,
            "oversizedMedia": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 33 small targets on mobile and 64 on tablet."
          },
          {
            "title": "Refactor fixed-width components",
            "urgency": "medium",
            "detail": "5 element(s) exceeded viewport width in tested layouts; use responsive component constraints."
          }
        ]
      },
      "securityLight": {
        "score": 31,
        "urgency": "medium",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": false,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "connection": "Keep-Alive",
            "content-encoding": "gzip",
            "content-type": "text/html;charset=UTF-8",
            "date": "Mon, 30 Mar 2026 00:41:41 GMT",
            "keep-alive": "timeout=15, max=500",
            "referrer-policy": "origin-when-cross-origin,strict-origin-when-cross-origin",
            "server": "Microsoft-IIS/5.0",
            "set-cookie": "VISITOR=returning; Path=/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/ciudadanos; HttpOnly; Secure; SameSite=None\nTS01a8e1d0=01d9c3d318675a9157d30da37cb02235ed5c5a546da76ff9a05ac14472dedf18431353a89662ae0b9455010cf4503c85157db36d672b9513dc51166213d651a68ae2bdd08db8841f1b06602086ef18d6b8551f389e; Path=/; HttpOnly; Secure; SameSite=None\nTS011d349b=01d9c3d3183d0ab5e35f0a4d3b0e06f02e6973180380529b1b9ba56384d07a19b66567890ae44783a444bdd5d48d6a967bacc4b9ad4bff902aea9909935fb9326af3d6d004f98a4d48eaff3a52021502918d296d1fe81761193e34385adc30c5a064c0078b; path=/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/ciudadanos; HttpOnly; Secure; SameSite=None",
            "strict-transport-security": "max-age=63072000; preload",
            "transfer-encoding": "chunked",
            "vary": "Accept-Encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1;mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add a Content-Security-Policy header",
            "urgency": "high",
            "detail": "Add an appropriate CSP to reduce script injection and resource loading risk."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 30,
        "urgency": "medium",
        "origin": "https://administracion.gob.es",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://administracion.gob.es/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/favicon.ico",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 2405028.2,
        "checks": {
          "hasEffectiveTextCompression": false
        },
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "estimatedSavingsBytes": 1315073,
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "estimatedSavingsBytes": 891965,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "estimatedSavingsBytes": 126680.2,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "estimatedSavingsBytes": 63759,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "estimatedSavingsBytes": 7551,
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings."
          }
        ],
        "recommendations": [
          {
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
          },
          {
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
          },
          {
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 7.37 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 4232658.2,
        "totalEstimatedBlockingMs": 9491,
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable text compression",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat.",
            "estimatedSavingsBytes": 1315073,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,284 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-text-compression"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 1197155,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,169 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 891965,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 871 KiB",
            "urgency": "high",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unused-javascript",
            "title": "Remove unused JavaScript",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code.",
            "estimatedSavingsBytes": 532648,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 520 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-javascript"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9491,
            "displayValue": "Est savings of 9,490 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 126680.2,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 124 KiB",
            "urgency": "medium",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "offscreen-images",
            "title": "Lazy-load offscreen images",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed.",
            "estimatedSavingsBytes": 91115,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 89 KiB",
            "urgency": "medium",
            "sourceAuditId": "offscreen-images"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 63759,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 62 KiB",
            "urgency": "medium",
            "sourceAuditId": "unminified-javascript"
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss.",
            "estimatedSavingsBytes": 7551,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-optimized-images"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 6712,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-responsive-images"
          }
        ],
        "recommendations": [
          {
            "title": "Enable text compression",
            "urgency": "high",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat. Estimated byte savings: 1.25 MB."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "high",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 1.14 MB."
          },
          {
            "title": "Minify CSS",
            "urgency": "high",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 871.06 KB."
          },
          {
            "title": "Remove unused JavaScript",
            "urgency": "high",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code. Estimated byte savings: 520.16 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 9491 ms."
          },
          {
            "title": "Serve images in next-gen formats",
            "urgency": "medium",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 123.71 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1886756
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.80 MB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.80 MB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 30,
        "urgency": "high",
        "transferBytes": 2193619,
        "css": {
          "unusedBytes": 1197155,
          "ratio": 0.545744270085188,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 532648,
          "duplicatedBytes": 0,
          "ratio": 0.2428170069642905,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "high",
            "estimatedSavingsBytes": 1197155,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          },
          {
            "area": "javascript",
            "title": "Remove unused JavaScript and feature bundles",
            "urgency": "high",
            "estimatedSavingsBytes": 532648,
            "strategy": "Drop unused packages and feature code, or move them behind route-level or interaction-triggered imports.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 35,
        "urgency": "high",
        "transferBytes": 2193619,
        "estimatedDeferrableBytes": 1820918,
        "renderBlockingMs": 9491,
        "breakdown": {
          "offscreenImageSavings": 91115,
          "unusedJavascriptSavings": 532648,
          "unusedCssSavings": 1197155
        },
        "candidates": [
          {
            "title": "Lazy-load offscreen images",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 91115,
            "strategy": "Load below-the-fold images only when they approach the viewport.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Defer non-critical JavaScript",
            "area": "javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 532648,
            "strategy": "Split bundles and load feature code on interaction or route transition.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1197155,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9491,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy stylesheet from administracion.gob.es",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from administracion.gob.es",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 254418,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from administracion.gob.es",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.googletagmanager.com",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 145384,
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 34,
        "urgency": "medium",
        "providerCount": 1,
        "requestCount": 2,
        "transferBytes": 290073,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290073,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "medium",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "medium",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          }
        ]
      },
      "redundancy": {
        "score": 68,
        "urgency": "high",
        "transferBytes": 2193619,
        "estimatedRedundantBytes": 1729803,
        "redundancyRatio": 0.7885612770494785,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 1197155,
            "displayValue": "Est savings of 1,169 KiB"
          },
          {
            "auditId": "unused-javascript",
            "title": "Reduce unused JavaScript",
            "savingsBytes": 532648,
            "displayValue": "Est savings of 520 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "high",
            "estimatedSavingsBytes": 1197155,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce unused javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 532648,
            "auditId": "unused-javascript",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Enable and verify text compression",
            "urgency": "medium",
            "estimatedSavingsBytes": 1315073,
            "auditId": "uses-text-compression",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 47,
        "urgency": "high",
        "totalTransferBytes": 2193619,
        "heavyRequestCount": 6,
        "heavyBytes": 1925291,
        "heavyRatio": 0.877677937691094,
        "heavyRequests": [
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "transferSize": 1177193,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "transferSize": 254418,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "transferSize": 159823,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "transferSize": 145384,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-4YNNM3J1E0&cx=c&gtm=4e63p1",
            "transferSize": 144689,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/libs/jquery.mCustomScrollbar.css",
            "transferSize": 43784,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 1220977
          },
          {
            "resourceType": "script",
            "count": 3,
            "transferBytes": 544491
          },
          {
            "resourceType": "image",
            "count": 1,
            "transferBytes": 159823
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "administracion.gob.es",
            "count": 4,
            "transferBytes": 1635218
          },
          {
            "domain": "www.googletagmanager.com",
            "count": 2,
            "transferBytes": 290073
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Lazy-load offscreen images and media galleries",
            "urgency": "medium",
            "estimatedSavingsBytes": 91115,
            "strategy": "Load imagery only when it enters the viewport or when a user opens the relevant section.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Split JavaScript by route or interaction",
            "urgency": "high",
            "estimatedSavingsBytes": 532648,
            "strategy": "Move non-critical bundles behind route-level or event-driven imports so they are only fetched on demand.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy stylesheet asset from administracion.gob.es",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "strategy": "Split this stylesheet so component-specific CSS is delivered only when the component is rendered.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 254418,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0,
          "displayValue": "12.1 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 12.1 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": 0.03,
          "displayValue": "12.5 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- Current value: 12.5 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": 0,
          "displayValue": "Est savings of 520 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- Current value: Est savings of 520 KiB\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 1,169 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 1,169 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 9,490 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 9,490 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": 0,
          "displayValue": "Est savings of 1,284 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- Current value: Est savings of 1,284 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 124 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 124 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 7 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- Current value: Est savings of 7 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 89 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- Current value: Est savings of 89 KiB\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://administracion.gob.es/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/residencia/obtencion-nacionalidad",
      "status": "ok",
      "finalUrl": "https://administracion.gob.es/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/residencia/obtencion-nacionalidad",
      "performanceScore": 0.55,
      "bestPracticesScore": 0.79,
      "transferBytes": 2189710,
      "co2Grams": 0.8388371723940001,
      "greenWeb": {
        "page": {
          "hostname": "administracion.gob.es",
          "checked": true,
          "status": "not-green",
          "green": false,
          "hostedBy": null,
          "hostedByWebsite": null,
          "listedProvider": null,
          "partner": null,
          "modified": "2026-03-29T13:38:28.588564",
          "supportingDocuments": [],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/administracion.gob.es",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290073,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "not-green",
          "externalOriginCount": 1,
          "greenCount": 1,
          "notGreenCount": 1,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 70,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/buscador/buscadorsimple.htm|input|text|q|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "q",
            "formContext": "form|get|/buscador/buscadorsimple.htm",
            "hasLabel": false,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 70,
              "urgency": "high",
              "issues": [
                "Missing associated label",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add a programmatic label using <label>, aria-label, or aria-labelledby.",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "Missing associated label",
            "urgency": "high",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 35,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": false,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Acquiring nationality - Residence - Citizens - Your rights and obligations in the EU - Tu espacio europeo - Punto de Acceso General",
          "lang": "en",
          "charset": "",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Understanding nationality, naturalisation, ways of acquiring nationality, registration of nationality.",
          "robots": "all",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 34,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 39,
          "tabletSmallTapTargets": 66,
          "fixedWidthOffenders": 2,
          "oversizedMedia": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 399,
            "viewportHeight": 864,
            "contentWidth": 399,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 2,
            "smallTapTargets": 39,
            "oversizedMedia": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 829,
            "viewportHeight": 1193,
            "contentWidth": 829,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 66,
            "oversizedMedia": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 39 small targets on mobile and 66 on tablet."
          },
          {
            "title": "Refactor fixed-width components",
            "urgency": "medium",
            "detail": "2 element(s) exceeded viewport width in tested layouts; use responsive component constraints."
          }
        ]
      },
      "securityLight": {
        "score": 31,
        "urgency": "medium",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": false,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "connection": "Keep-Alive",
            "content-encoding": "gzip",
            "content-length": "14325",
            "content-type": "text/html;charset=UTF-8",
            "date": "Mon, 30 Mar 2026 00:42:03 GMT",
            "keep-alive": "timeout=15, max=500",
            "referrer-policy": "origin-when-cross-origin,strict-origin-when-cross-origin",
            "server": "Microsoft-IIS/5.0",
            "set-cookie": "VISITOR=returning; Path=/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/ciudadanos; HttpOnly; Secure; SameSite=None\nTS01a8e1d0=01d9c3d318675a9157d30da37cb02235ed5c5a546da76ff9a05ac14472dedf18431353a89662ae0b9455010cf4503c85157db36d672b9513dc51166213d651a68ae2bdd08db8841f1b06602086ef18d6b8551f389e; Path=/; HttpOnly; Secure; SameSite=None\nTS01cc21ed=01d9c3d31875eb4ee065abf109a5ef141663ea9e5662999d88da62791f603954b0657e3ad206abe0e840a1f31af532847905d0382b90b7a84781f287b0f8ea376c270e95758790e5f992ab8a462f1118463bf9b8565956db104bfe20987b3f54c98e7c3998; path=/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/ciudadanos; HttpOnly; Secure; SameSite=None",
            "strict-transport-security": "max-age=63072000; preload",
            "vary": "Accept-Encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1;mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add a Content-Security-Policy header",
            "urgency": "high",
            "detail": "Add an appropriate CSP to reduce script injection and resource loading risk."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 30,
        "urgency": "medium",
        "origin": "https://administracion.gob.es",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://administracion.gob.es/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/favicon.ico",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 2403496.2,
        "checks": {
          "hasEffectiveTextCompression": false
        },
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "estimatedSavingsBytes": 1313541,
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "estimatedSavingsBytes": 891965,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "estimatedSavingsBytes": 126680.2,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "estimatedSavingsBytes": 63759,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "estimatedSavingsBytes": 7551,
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings."
          }
        ],
        "recommendations": [
          {
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
          },
          {
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
          },
          {
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 7.37 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 4246436.2,
        "totalEstimatedBlockingMs": 9276,
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable text compression",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat.",
            "estimatedSavingsBytes": 1313541,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,283 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-text-compression"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 1197764,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,170 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 891965,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 871 KiB",
            "urgency": "high",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unused-javascript",
            "title": "Remove unused JavaScript",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code.",
            "estimatedSavingsBytes": 547349,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 535 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-javascript"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9276,
            "displayValue": "Est savings of 9,280 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 126680.2,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 124 KiB",
            "urgency": "medium",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "offscreen-images",
            "title": "Lazy-load offscreen images",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed.",
            "estimatedSavingsBytes": 91115,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 89 KiB",
            "urgency": "medium",
            "sourceAuditId": "offscreen-images"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 63759,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 62 KiB",
            "urgency": "medium",
            "sourceAuditId": "unminified-javascript"
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss.",
            "estimatedSavingsBytes": 7551,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-optimized-images"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 6712,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-responsive-images"
          }
        ],
        "recommendations": [
          {
            "title": "Enable text compression",
            "urgency": "high",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat. Estimated byte savings: 1.25 MB."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "high",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 1.14 MB."
          },
          {
            "title": "Minify CSS",
            "urgency": "high",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 871.06 KB."
          },
          {
            "title": "Remove unused JavaScript",
            "urgency": "high",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code. Estimated byte savings: 534.52 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 9276 ms."
          },
          {
            "title": "Serve images in next-gen formats",
            "urgency": "medium",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 123.71 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1882473
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.80 MB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.80 MB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 30,
        "urgency": "high",
        "transferBytes": 2189710,
        "css": {
          "unusedBytes": 1197764,
          "ratio": 0.5469966342575044,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 547349,
          "duplicatedBytes": 0,
          "ratio": 0.24996415050394802,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "high",
            "estimatedSavingsBytes": 1197764,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          },
          {
            "area": "javascript",
            "title": "Remove unused JavaScript and feature bundles",
            "urgency": "high",
            "estimatedSavingsBytes": 547349,
            "strategy": "Drop unused packages and feature code, or move them behind route-level or interaction-triggered imports.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 35,
        "urgency": "high",
        "transferBytes": 2189710,
        "estimatedDeferrableBytes": 1836228,
        "renderBlockingMs": 9276,
        "breakdown": {
          "offscreenImageSavings": 91115,
          "unusedJavascriptSavings": 547349,
          "unusedCssSavings": 1197764
        },
        "candidates": [
          {
            "title": "Lazy-load offscreen images",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 91115,
            "strategy": "Load below-the-fold images only when they approach the viewport.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Defer non-critical JavaScript",
            "area": "javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 547349,
            "strategy": "Split bundles and load feature code on interaction or route transition.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1197764,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9276,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy stylesheet from administracion.gob.es",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from administracion.gob.es",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 254418,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from administracion.gob.es",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.googletagmanager.com",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 145384,
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 34,
        "urgency": "medium",
        "providerCount": 1,
        "requestCount": 2,
        "transferBytes": 290073,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290073,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "medium",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "medium",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          }
        ]
      },
      "redundancy": {
        "score": 66,
        "urgency": "high",
        "transferBytes": 2189710,
        "estimatedRedundantBytes": 1745113,
        "redundancyRatio": 0.7969607847614524,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 1197764,
            "displayValue": "Est savings of 1,170 KiB"
          },
          {
            "auditId": "unused-javascript",
            "title": "Reduce unused JavaScript",
            "savingsBytes": 547349,
            "displayValue": "Est savings of 535 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "high",
            "estimatedSavingsBytes": 1197764,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce unused javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 547349,
            "auditId": "unused-javascript",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Enable and verify text compression",
            "urgency": "medium",
            "estimatedSavingsBytes": 1313541,
            "auditId": "uses-text-compression",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 47,
        "urgency": "high",
        "totalTransferBytes": 2189710,
        "heavyRequestCount": 6,
        "heavyBytes": 1925291,
        "heavyRatio": 0.8792447401710729,
        "heavyRequests": [
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "transferSize": 1177193,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "transferSize": 254418,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "transferSize": 159823,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "transferSize": 145384,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-4YNNM3J1E0&cx=c&gtm=4e63p1",
            "transferSize": 144689,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/libs/jquery.mCustomScrollbar.css",
            "transferSize": 43784,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 1220977
          },
          {
            "resourceType": "script",
            "count": 3,
            "transferBytes": 544491
          },
          {
            "resourceType": "image",
            "count": 1,
            "transferBytes": 159823
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "administracion.gob.es",
            "count": 4,
            "transferBytes": 1635218
          },
          {
            "domain": "www.googletagmanager.com",
            "count": 2,
            "transferBytes": 290073
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Lazy-load offscreen images and media galleries",
            "urgency": "medium",
            "estimatedSavingsBytes": 91115,
            "strategy": "Load imagery only when it enters the viewport or when a user opens the relevant section.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Split JavaScript by route or interaction",
            "urgency": "high",
            "estimatedSavingsBytes": 547349,
            "strategy": "Move non-critical bundles behind route-level or event-driven imports so they are only fetched on demand.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy stylesheet asset from administracion.gob.es",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "strategy": "Split this stylesheet so component-specific CSS is delivered only when the component is rendered.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 254418,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0,
          "displayValue": "11.8 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 11.8 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": 0.04,
          "displayValue": "11.9 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- Current value: 11.9 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": 0,
          "displayValue": "Est savings of 535 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- Current value: Est savings of 535 KiB\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 1,170 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 1,170 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 9,280 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 9,280 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": 0,
          "displayValue": "Est savings of 1,283 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- Current value: Est savings of 1,283 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 124 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 124 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 7 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- Current value: Est savings of 7 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 89 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- Current value: Est savings of 89 KiB\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://administracion.gob.es/pag_Home/gl/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/consumidores/compraventa/inmobiliario",
      "status": "ok",
      "finalUrl": "https://administracion.gob.es/pag_Home/gl/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/consumidores/compraventa/inmobiliario",
      "performanceScore": 0.55,
      "bestPracticesScore": 0.79,
      "transferBytes": 2197957,
      "co2Grams": 0.8419964446998001,
      "greenWeb": {
        "page": {
          "hostname": "administracion.gob.es",
          "checked": true,
          "status": "not-green",
          "green": false,
          "hostedBy": null,
          "hostedByWebsite": null,
          "listedProvider": null,
          "partner": null,
          "modified": "2026-03-29T13:38:28.588564",
          "supportingDocuments": [],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/administracion.gob.es",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290073,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "not-green",
          "externalOriginCount": 1,
          "greenCount": 1,
          "notGreenCount": 1,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 70,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/buscador/buscadorsimple.htm|input|text|q|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "q",
            "formContext": "form|get|/buscador/buscadorsimple.htm",
            "hasLabel": false,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 70,
              "urgency": "high",
              "issues": [
                "Missing associated label",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add a programmatic label using <label>, aria-label, or aria-labelledby.",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "Missing associated label",
            "urgency": "high",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 25,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": true,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": false,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Compraventa de productos y servicios: Sector inmobiliario - Compraventa de productos y servicios - Consumidores - Ciudadanos - Tus derechos y obligaciones en la UE - Tu espacio europeo - Punto de Acceso General",
          "lang": "gl",
          "charset": "",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Conoce los contratos de crédito hipotecario, su inscripción en los Registros de la Propiedad de los contratos de crédito hipotecario e Inscripción de las sentencias firmes que declaran nulas determinadas cláusulas del contrato",
          "robots": "all",
          "canonical": "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/consumidores/compraventa/inmobiliario",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 34,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 34,
          "tabletSmallTapTargets": 67,
          "fixedWidthOffenders": 2,
          "oversizedMedia": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 399,
            "viewportHeight": 864,
            "contentWidth": 399,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 2,
            "smallTapTargets": 34,
            "oversizedMedia": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 829,
            "viewportHeight": 1193,
            "contentWidth": 829,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 67,
            "oversizedMedia": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 34 small targets on mobile and 67 on tablet."
          },
          {
            "title": "Refactor fixed-width components",
            "urgency": "medium",
            "detail": "2 element(s) exceeded viewport width in tested layouts; use responsive component constraints."
          }
        ]
      },
      "securityLight": {
        "score": 31,
        "urgency": "medium",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": false,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "connection": "Keep-Alive",
            "content-encoding": "gzip",
            "content-length": "14682",
            "content-type": "text/html;charset=UTF-8",
            "date": "Mon, 30 Mar 2026 00:42:28 GMT",
            "keep-alive": "timeout=15, max=500",
            "referrer-policy": "origin-when-cross-origin,strict-origin-when-cross-origin",
            "server": "Microsoft-IIS/5.0",
            "set-cookie": "VISITOR=returning; Path=/pag_Home/gl/Tu-espacio-europeo/derechos-obligaciones/ciudadanos; HttpOnly; Secure; SameSite=None\nTS01a8e1d0=01d9c3d318675a9157d30da37cb02235ed5c5a546da76ff9a05ac14472dedf18431353a89662ae0b9455010cf4503c85157db36d672b9513dc51166213d651a68ae2bdd08db8841f1b06602086ef18d6b8551f389e; Path=/; HttpOnly; Secure; SameSite=None\nTS0146228d=01d9c3d31875eb4ee065abf109a5ef141663ea9e5662999d88da62791f603954b0657e3ad206abe0e840a1f31af532847905d0382b90b7a84781f287b0f8ea376c270e95758790e5f992ab8a462f1118463bf9b8565956db104bfe20987b3f54c98e7c3998; path=/pag_Home/gl/Tu-espacio-europeo/derechos-obligaciones/ciudadanos; HttpOnly; Secure; SameSite=None",
            "strict-transport-security": "max-age=63072000; preload",
            "vary": "Accept-Encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1;mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add a Content-Security-Policy header",
            "urgency": "high",
            "detail": "Add an appropriate CSP to reduce script injection and resource loading risk."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 30,
        "urgency": "medium",
        "origin": "https://administracion.gob.es",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://administracion.gob.es/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/favicon.ico",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 2403496.2,
        "checks": {
          "hasEffectiveTextCompression": false
        },
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "estimatedSavingsBytes": 1313541,
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "estimatedSavingsBytes": 891965,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "estimatedSavingsBytes": 126680.2,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "estimatedSavingsBytes": 63759,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "estimatedSavingsBytes": 7551,
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings."
          }
        ],
        "recommendations": [
          {
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
          },
          {
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
          },
          {
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 7.37 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 4247039.2,
        "totalEstimatedBlockingMs": 9299,
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable text compression",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat.",
            "estimatedSavingsBytes": 1313541,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,283 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-text-compression"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 1195916,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,168 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 891965,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 871 KiB",
            "urgency": "high",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unused-javascript",
            "title": "Remove unused JavaScript",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code.",
            "estimatedSavingsBytes": 546397,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 534 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-javascript"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9299,
            "displayValue": "Est savings of 9,300 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 126680.2,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 124 KiB",
            "urgency": "medium",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "offscreen-images",
            "title": "Lazy-load offscreen images",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed.",
            "estimatedSavingsBytes": 94518,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 92 KiB",
            "urgency": "medium",
            "sourceAuditId": "offscreen-images"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 63759,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 62 KiB",
            "urgency": "medium",
            "sourceAuditId": "unminified-javascript"
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss.",
            "estimatedSavingsBytes": 7551,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-optimized-images"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 6712,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-responsive-images"
          }
        ],
        "recommendations": [
          {
            "title": "Enable text compression",
            "urgency": "high",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat. Estimated byte savings: 1.25 MB."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "high",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 1.14 MB."
          },
          {
            "title": "Minify CSS",
            "urgency": "high",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 871.06 KB."
          },
          {
            "title": "Remove unused JavaScript",
            "urgency": "high",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code. Estimated byte savings: 533.59 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 9299 ms."
          },
          {
            "title": "Serve images in next-gen formats",
            "urgency": "medium",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 123.71 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1890387
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.80 MB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.80 MB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 30,
        "urgency": "high",
        "transferBytes": 2197957,
        "css": {
          "unusedBytes": 1195916,
          "ratio": 0.5441034560730715,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 546397,
          "duplicatedBytes": 0,
          "ratio": 0.24859312534321645,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "high",
            "estimatedSavingsBytes": 1195916,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          },
          {
            "area": "javascript",
            "title": "Remove unused JavaScript and feature bundles",
            "urgency": "high",
            "estimatedSavingsBytes": 546397,
            "strategy": "Drop unused packages and feature code, or move them behind route-level or interaction-triggered imports.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 35,
        "urgency": "high",
        "transferBytes": 2197957,
        "estimatedDeferrableBytes": 1836831,
        "renderBlockingMs": 9299,
        "breakdown": {
          "offscreenImageSavings": 94518,
          "unusedJavascriptSavings": 546397,
          "unusedCssSavings": 1195916
        },
        "candidates": [
          {
            "title": "Lazy-load offscreen images",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 94518,
            "strategy": "Load below-the-fold images only when they approach the viewport.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Defer non-critical JavaScript",
            "area": "javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 546397,
            "strategy": "Split bundles and load feature code on interaction or route transition.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1195916,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9299,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy stylesheet from administracion.gob.es",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from administracion.gob.es",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 254411,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from administracion.gob.es",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 159817,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.googletagmanager.com",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 145384,
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 34,
        "urgency": "medium",
        "providerCount": 1,
        "requestCount": 2,
        "transferBytes": 290073,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290073,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "medium",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "medium",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          }
        ]
      },
      "redundancy": {
        "score": 66,
        "urgency": "high",
        "transferBytes": 2197957,
        "estimatedRedundantBytes": 1742313,
        "redundancyRatio": 0.792696581416288,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 1195916,
            "displayValue": "Est savings of 1,168 KiB"
          },
          {
            "auditId": "unused-javascript",
            "title": "Reduce unused JavaScript",
            "savingsBytes": 546397,
            "displayValue": "Est savings of 534 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "high",
            "estimatedSavingsBytes": 1195916,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce unused javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 546397,
            "auditId": "unused-javascript",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Enable and verify text compression",
            "urgency": "medium",
            "estimatedSavingsBytes": 1313541,
            "auditId": "uses-text-compression",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 47,
        "urgency": "high",
        "totalTransferBytes": 2197957,
        "heavyRequestCount": 6,
        "heavyBytes": 1925278,
        "heavyRatio": 0.8759397931806673,
        "heavyRequests": [
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "transferSize": 1177193,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "transferSize": 254411,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "transferSize": 159817,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "transferSize": 145384,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-4YNNM3J1E0&cx=c&gtm=4e63p1",
            "transferSize": 144689,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/libs/jquery.mCustomScrollbar.css",
            "transferSize": 43784,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 1220977
          },
          {
            "resourceType": "script",
            "count": 3,
            "transferBytes": 544484
          },
          {
            "resourceType": "image",
            "count": 1,
            "transferBytes": 159817
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "administracion.gob.es",
            "count": 4,
            "transferBytes": 1635205
          },
          {
            "domain": "www.googletagmanager.com",
            "count": 2,
            "transferBytes": 290073
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Lazy-load offscreen images and media galleries",
            "urgency": "medium",
            "estimatedSavingsBytes": 94518,
            "strategy": "Load imagery only when it enters the viewport or when a user opens the relevant section.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Split JavaScript by route or interaction",
            "urgency": "high",
            "estimatedSavingsBytes": 546397,
            "strategy": "Move non-critical bundles behind route-level or event-driven imports so they are only fetched on demand.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy stylesheet asset from administracion.gob.es",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "strategy": "Split this stylesheet so component-specific CSS is delivered only when the component is rendered.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 254411,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 159817,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0,
          "displayValue": "12.1 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 12.1 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": 0.01,
          "displayValue": "15.1 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- Current value: 15.1 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": 0,
          "displayValue": "Est savings of 534 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- Current value: Est savings of 534 KiB\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 1,168 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 1,168 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 9,300 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 9,300 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": 0,
          "displayValue": "Est savings of 1,283 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- Current value: Est savings of 1,283 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 124 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 124 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 7 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- Current value: Est savings of 7 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 92 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- Current value: Est savings of 92 KiB\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://administracion.gob.es/pag_Home/ca/Tu-espacio-europeo/derechos-obligaciones/empresas/inicio-gestion-cierre/derechos/patentes-marcas/servicios-oepm",
      "status": "ok",
      "finalUrl": "https://administracion.gob.es/pag_Home/ca/Tu-espacio-europeo/derechos-obligaciones/empresas/inicio-gestion-cierre/derechos/patentes-marcas/servicios-oepm",
      "performanceScore": 0.55,
      "bestPracticesScore": 0.79,
      "transferBytes": 2192858,
      "co2Grams": 0.8400431126412,
      "greenWeb": {
        "page": {
          "hostname": "administracion.gob.es",
          "checked": true,
          "status": "not-green",
          "green": false,
          "hostedBy": null,
          "hostedByWebsite": null,
          "listedProvider": null,
          "partner": null,
          "modified": "2026-03-29T13:38:28.588564",
          "supportingDocuments": [],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/administracion.gob.es",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290073,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "not-green",
          "externalOriginCount": 1,
          "greenCount": 1,
          "notGreenCount": 1,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 70,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/buscador/buscadorsimple.htm|input|text|q|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "q",
            "formContext": "form|get|/buscador/buscadorsimple.htm",
            "hasLabel": false,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 70,
              "urgency": "high",
              "issues": [
                "Missing associated label",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add a programmatic label using <label>, aria-label, or aria-labelledby.",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "Missing associated label",
            "urgency": "high",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 25,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": true,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": false,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Servicios que ofrece la Oficina Española de Patentes y Marcas - Patentes y marcas - Derechos de propiedad industrial e intelectual - Puesta en marcha, gestión y cierre de una empresa - Empresas - Tus derechos y obligaciones en la UE - Tu espacio europeo - Punto de Acceso General",
          "lang": "ca",
          "charset": "",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Conoce los servicios que ofrece la Oficina Española de Patentes y Marcas: gratuitos y de pago",
          "robots": "all",
          "canonical": "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/empresas/inicio-gestion-cierre/derechos/patentes-marcas/servicios-oepm",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 30,
          "tabletSmallTapTargets": 70,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 399,
            "viewportHeight": 864,
            "contentWidth": 399,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 30,
            "oversizedMedia": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 829,
            "viewportHeight": 1193,
            "contentWidth": 829,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 70,
            "oversizedMedia": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 30 small targets on mobile and 70 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 33,
        "urgency": "medium",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": false,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 2,
          "externalScriptsWithoutIntegrity": 2,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "connection": "Keep-Alive",
            "content-encoding": "gzip",
            "content-length": "16376",
            "content-type": "text/html;charset=UTF-8",
            "date": "Mon, 30 Mar 2026 00:42:53 GMT",
            "keep-alive": "timeout=15, max=500",
            "referrer-policy": "origin-when-cross-origin,strict-origin-when-cross-origin",
            "server": "Microsoft-IIS/5.0",
            "set-cookie": "VISITOR=returning; Path=/pag_Home/ca/Tu-espacio-europeo/derechos-obligaciones/empresas; HttpOnly; Secure; SameSite=None\nTS01a8e1d0=01d9c3d318675a9157d30da37cb02235ed5c5a546da76ff9a05ac14472dedf18431353a89662ae0b9455010cf4503c85157db36d672b9513dc51166213d651a68ae2bdd08db8841f1b06602086ef18d6b8551f389e; Path=/; HttpOnly; Secure; SameSite=None\nTS013701fe=01d9c3d3183d0ab5e35f0a4d3b0e06f02e6973180380529b1b9ba56384d07a19b66567890ae44783a444bdd5d48d6a967bacc4b9ad4bff902aea9909935fb9326af3d6d004f98a4d48eaff3a52021502918d296d1fe81761193e34385adc30c5a064c0078b; path=/pag_Home/ca/Tu-espacio-europeo/derechos-obligaciones/empresas; HttpOnly; Secure; SameSite=None",
            "strict-transport-security": "max-age=63072000; preload",
            "vary": "Accept-Encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1;mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add a Content-Security-Policy header",
            "urgency": "high",
            "detail": "Add an appropriate CSP to reduce script injection and resource loading risk."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "2 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 30,
        "urgency": "medium",
        "origin": "https://administracion.gob.es",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://administracion.gob.es/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/favicon.ico",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 2403496.2,
        "checks": {
          "hasEffectiveTextCompression": false
        },
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "estimatedSavingsBytes": 1313541,
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "estimatedSavingsBytes": 891965,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "estimatedSavingsBytes": 126680.2,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "estimatedSavingsBytes": 63759,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "estimatedSavingsBytes": 7551,
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings."
          }
        ],
        "recommendations": [
          {
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
          },
          {
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
          },
          {
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 7.37 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 4230860.2,
        "totalEstimatedBlockingMs": 9416,
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable text compression",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat.",
            "estimatedSavingsBytes": 1313541,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,283 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-text-compression"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 1197113,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,169 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 891965,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 871 KiB",
            "urgency": "high",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unused-javascript",
            "title": "Remove unused JavaScript",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code.",
            "estimatedSavingsBytes": 532424,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 520 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-javascript"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9416,
            "displayValue": "Est savings of 9,420 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 126680.2,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 124 KiB",
            "urgency": "medium",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "offscreen-images",
            "title": "Lazy-load offscreen images",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed.",
            "estimatedSavingsBytes": 91115,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 89 KiB",
            "urgency": "medium",
            "sourceAuditId": "offscreen-images"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 63759,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 62 KiB",
            "urgency": "medium",
            "sourceAuditId": "unminified-javascript"
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss.",
            "estimatedSavingsBytes": 7551,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-optimized-images"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 6712,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-responsive-images"
          }
        ],
        "recommendations": [
          {
            "title": "Enable text compression",
            "urgency": "high",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat. Estimated byte savings: 1.25 MB."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "high",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 1.14 MB."
          },
          {
            "title": "Minify CSS",
            "urgency": "high",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 871.06 KB."
          },
          {
            "title": "Remove unused JavaScript",
            "urgency": "high",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code. Estimated byte savings: 519.95 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 9416 ms."
          },
          {
            "title": "Serve images in next-gen formats",
            "urgency": "medium",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 123.71 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 4,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 2,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "2 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1883573
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.80 MB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.80 MB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 33,
        "urgency": "high",
        "transferBytes": 2192858,
        "css": {
          "unusedBytes": 1197113,
          "ratio": 0.5459145097402568,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 532424,
          "duplicatedBytes": 0,
          "ratio": 0.24279912333584755,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0.125,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "high",
            "estimatedSavingsBytes": 1197113,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          },
          {
            "area": "javascript",
            "title": "Remove unused JavaScript and feature bundles",
            "urgency": "high",
            "estimatedSavingsBytes": 532424,
            "strategy": "Drop unused packages and feature code, or move them behind route-level or interaction-triggered imports.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 35,
        "urgency": "high",
        "transferBytes": 2192858,
        "estimatedDeferrableBytes": 1820652,
        "renderBlockingMs": 9416,
        "breakdown": {
          "offscreenImageSavings": 91115,
          "unusedJavascriptSavings": 532424,
          "unusedCssSavings": 1197113
        },
        "candidates": [
          {
            "title": "Lazy-load offscreen images",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 91115,
            "strategy": "Load below-the-fold images only when they approach the viewport.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Defer non-critical JavaScript",
            "area": "javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 532424,
            "strategy": "Split bundles and load feature code on interaction or route transition.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1197113,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9416,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy stylesheet from administracion.gob.es",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from administracion.gob.es",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 254411,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from administracion.gob.es",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.googletagmanager.com",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 145384,
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 34,
        "urgency": "medium",
        "providerCount": 1,
        "requestCount": 2,
        "transferBytes": 290073,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290073,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "medium",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "medium",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          }
        ]
      },
      "redundancy": {
        "score": 78,
        "urgency": "high",
        "transferBytes": 2192858,
        "estimatedRedundantBytes": 1729537,
        "redundancyRatio": 0.7887136330761043,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 1197113,
            "displayValue": "Est savings of 1,169 KiB"
          },
          {
            "auditId": "unused-javascript",
            "title": "Reduce unused JavaScript",
            "savingsBytes": 532424,
            "displayValue": "Est savings of 520 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "high",
            "estimatedSavingsBytes": 1197113,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce unused javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 532424,
            "auditId": "unused-javascript",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Enable and verify text compression",
            "urgency": "medium",
            "estimatedSavingsBytes": 1313541,
            "auditId": "uses-text-compression",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce DOM complexity and redundant markup",
            "urgency": "medium",
            "estimatedSavingsBytes": 0,
            "auditId": "dom-size",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 47,
        "urgency": "high",
        "totalTransferBytes": 2192858,
        "heavyRequestCount": 6,
        "heavyBytes": 1925284,
        "heavyRatio": 0.8779793310829976,
        "heavyRequests": [
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "transferSize": 1177193,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "transferSize": 254411,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "transferSize": 159823,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "transferSize": 145384,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-4YNNM3J1E0&cx=c&gtm=4e63p1",
            "transferSize": 144689,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/libs/jquery.mCustomScrollbar.css",
            "transferSize": 43784,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 1220977
          },
          {
            "resourceType": "script",
            "count": 3,
            "transferBytes": 544484
          },
          {
            "resourceType": "image",
            "count": 1,
            "transferBytes": 159823
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "administracion.gob.es",
            "count": 4,
            "transferBytes": 1635211
          },
          {
            "domain": "www.googletagmanager.com",
            "count": 2,
            "transferBytes": 290073
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Lazy-load offscreen images and media galleries",
            "urgency": "medium",
            "estimatedSavingsBytes": 91115,
            "strategy": "Load imagery only when it enters the viewport or when a user opens the relevant section.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Split JavaScript by route or interaction",
            "urgency": "high",
            "estimatedSavingsBytes": 532424,
            "strategy": "Move non-critical bundles behind route-level or event-driven imports so they are only fetched on demand.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy stylesheet asset from administracion.gob.es",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "strategy": "Split this stylesheet so component-specific CSS is delivered only when the component is rendered.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 254411,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0,
          "displayValue": "12.5 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 12.5 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": 0.01,
          "displayValue": "14.3 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- Current value: 14.3 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": 0,
          "displayValue": "Est savings of 520 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- Current value: Est savings of 520 KiB\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 1,169 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 1,169 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 9,420 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 9,420 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": 0,
          "displayValue": "Est savings of 1,283 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- Current value: Est savings of 1,283 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 124 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 124 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 7 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- Current value: Est savings of 7 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 89 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- Current value: Est savings of 89 KiB\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "dom-size",
          "title": "Avoid an excessive DOM size",
          "description": "A large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).",
          "score": 0.5,
          "displayValue": "844 elements",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Avoid an excessive DOM size\n\n- Lighthouse audit: dom-size\n- Current value: 844 elements\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nA large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://administracion.gob.es/pag_Home/va/index.html",
      "status": "ok",
      "finalUrl": "https://administracion.gob.es/pag_Home/va/index.html",
      "performanceScore": 0.55,
      "bestPracticesScore": 0.79,
      "transferBytes": 3252542,
      "co2Grams": 1.2459883429188001,
      "greenWeb": {
        "page": {
          "hostname": "administracion.gob.es",
          "checked": true,
          "status": "not-green",
          "green": false,
          "hostedBy": null,
          "hostedByWebsite": null,
          "listedProvider": null,
          "partner": null,
          "modified": "2026-03-29T13:38:28.588564",
          "supportingDocuments": [],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/administracion.gob.es",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 145384,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "not-green",
          "externalOriginCount": 1,
          "greenCount": 1,
          "notGreenCount": 1,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 70,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/buscador/buscadorsimple.htm|input|text|q|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "q",
            "formContext": "form|get|/buscador/buscadorsimple.htm",
            "hasLabel": false,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 70,
              "urgency": "high",
              "issues": [
                "Missing associated label",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add a programmatic label using <label>, aria-label, or aria-labelledby.",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "Missing associated label",
            "urgency": "high",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 25,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": true,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": false,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Administracion.gob.es - Punto de Acceso General",
          "lang": "ca-valencia",
          "charset": "",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "El Punt d'Accés General (administracion.gob.es) és un portal web que oferix un punt únic d'accés per al ciutadà a informació d'interés sobre les Administracions Públiques i sobre els seus tràmits administratius.",
          "robots": "all",
          "canonical": "https://administracion.gob.es/pag_Home/index.html",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 38,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 72,
          "tabletSmallTapTargets": 120,
          "fixedWidthOffenders": 4,
          "oversizedMedia": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 390,
            "viewportHeight": 844,
            "contentWidth": 390,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 2,
            "smallTapTargets": 72,
            "oversizedMedia": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 820,
            "viewportHeight": 1180,
            "contentWidth": 820,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 2,
            "smallTapTargets": 120,
            "oversizedMedia": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 72 small targets on mobile and 120 on tablet."
          },
          {
            "title": "Refactor fixed-width components",
            "urgency": "medium",
            "detail": "4 element(s) exceeded viewport width in tested layouts; use responsive component constraints."
          }
        ]
      },
      "securityLight": {
        "score": 31,
        "urgency": "medium",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": false,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "connection": "Keep-Alive",
            "content-encoding": "gzip",
            "content-type": "text/html;charset=UTF-8",
            "date": "Mon, 30 Mar 2026 00:43:20 GMT",
            "keep-alive": "timeout=15, max=500",
            "referrer-policy": "origin-when-cross-origin,strict-origin-when-cross-origin",
            "server": "Microsoft-IIS/5.0",
            "set-cookie": "VISITOR=returning; Path=/pag_Home/va/index.html; HttpOnly; Secure; SameSite=None\nTS01a8e1d0=01d9c3d318675a9157d30da37cb02235ed5c5a546da76ff9a05ac14472dedf18431353a89662ae0b9455010cf4503c85157db36d672b9513dc51166213d651a68ae2bdd08db8841f1b06602086ef18d6b8551f389e; Path=/; HttpOnly; Secure; SameSite=None\nTS01b3fa7a=01d9c3d318c7d1cb0bebf53c78d5e2cd07886a7b11a76ff9a05ac14472dedf18431353a89662ae0b9455010cf4503c85157db36d672b9513dc51166213d651a68ae2bdd08d31f5962ba3c37b755afd0cf0640a64fb0b9c9d0b5d48d8152625567c42b16753; path=/pag_Home/va/index.html; HttpOnly; Secure; SameSite=None",
            "strict-transport-security": "max-age=63072000; preload",
            "transfer-encoding": "chunked",
            "vary": "Accept-Encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1;mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add a Content-Security-Policy header",
            "urgency": "high",
            "detail": "Add an appropriate CSP to reduce script injection and resource loading risk."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 30,
        "urgency": "medium",
        "origin": "https://administracion.gob.es",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://administracion.gob.es/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/favicon.ico",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 92,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 3004271.45,
        "checks": {
          "hasEffectiveTextCompression": false
        },
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "estimatedSavingsBytes": 1313541,
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "estimatedSavingsBytes": 891965,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "high",
            "estimatedSavingsBytes": 704527.4500000001,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "estimatedSavingsBytes": 63759,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "estimatedSavingsBytes": 30479,
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings."
          }
        ],
        "recommendations": [
          {
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
          },
          {
            "title": "Use modern image compression formats",
            "urgency": "high",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 688.02 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
          },
          {
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 29.76 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 5352393.45,
        "totalEstimatedBlockingMs": 8957,
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable text compression",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat.",
            "estimatedSavingsBytes": 1313541,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,283 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-text-compression"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 1189756,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,162 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 891965,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 871 KiB",
            "urgency": "high",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 704527.4500000001,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 688 KiB",
            "urgency": "high",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 488212,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 477 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-responsive-images"
          },
          {
            "id": "unused-javascript",
            "title": "Remove unused JavaScript",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code.",
            "estimatedSavingsBytes": 422807,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 413 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-javascript"
          },
          {
            "id": "offscreen-images",
            "title": "Lazy-load offscreen images",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed.",
            "estimatedSavingsBytes": 247347,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 242 KiB",
            "urgency": "high",
            "sourceAuditId": "offscreen-images"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 8957,
            "displayValue": "Est savings of 8,960 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 63759,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 62 KiB",
            "urgency": "medium",
            "sourceAuditId": "unminified-javascript"
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss.",
            "estimatedSavingsBytes": 30479,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 30 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-optimized-images"
          }
        ],
        "recommendations": [
          {
            "title": "Enable text compression",
            "urgency": "high",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat. Estimated byte savings: 1.25 MB."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "high",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 1.13 MB."
          },
          {
            "title": "Minify CSS",
            "urgency": "high",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 871.06 KB."
          },
          {
            "title": "Serve images in next-gen formats",
            "urgency": "high",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 688.02 KB."
          },
          {
            "title": "Right-size images for viewport",
            "urgency": "high",
            "detail": "Avoid sending larger images than the rendered size needs. Estimated byte savings: 476.77 KB."
          },
          {
            "title": "Remove unused JavaScript",
            "urgency": "high",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code. Estimated byte savings: 412.90 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 3088856
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 2.95 MB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 2.95 MB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 21,
        "urgency": "high",
        "transferBytes": 3252542,
        "css": {
          "unusedBytes": 1189756,
          "ratio": 0.36579266309243663,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 422807,
          "duplicatedBytes": 0,
          "ratio": 0.12999278717999643,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0.125,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "high",
            "estimatedSavingsBytes": 1189756,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          },
          {
            "area": "javascript",
            "title": "Remove unused JavaScript and feature bundles",
            "urgency": "high",
            "estimatedSavingsBytes": 422807,
            "strategy": "Drop unused packages and feature code, or move them behind route-level or interaction-triggered imports.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 29,
        "urgency": "high",
        "transferBytes": 3252542,
        "estimatedDeferrableBytes": 1859910,
        "renderBlockingMs": 8957,
        "breakdown": {
          "offscreenImageSavings": 247347,
          "unusedJavascriptSavings": 422807,
          "unusedCssSavings": 1189756
        },
        "candidates": [
          {
            "title": "Lazy-load offscreen images",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 247347,
            "strategy": "Load below-the-fold images only when they approach the viewport.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Defer non-critical JavaScript",
            "area": "javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 422807,
            "strategy": "Split bundles and load feature code on interaction or route transition.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1189756,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 8957,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy stylesheet from administracion.gob.es",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from administracion.gob.es",
            "area": "image",
            "urgency": "high",
            "estimatedSavingsBytes": 498764,
            "url": "https://administracion.gob.es/dam/jcr:e31ce16e-02c8-487e-b5dc-8163515b1293/oficina-atencion.jpg",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from administracion.gob.es",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 254411,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 17,
        "urgency": "low",
        "providerCount": 1,
        "requestCount": 1,
        "transferBytes": 145384,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 145384,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "low",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          }
        ]
      },
      "redundancy": {
        "score": 60,
        "urgency": "high",
        "transferBytes": 3252542,
        "estimatedRedundantBytes": 1612563,
        "redundancyRatio": 0.4957854502724331,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 1189756,
            "displayValue": "Est savings of 1,162 KiB"
          },
          {
            "auditId": "unused-javascript",
            "title": "Reduce unused JavaScript",
            "savingsBytes": 422807,
            "displayValue": "Est savings of 413 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "high",
            "estimatedSavingsBytes": 1189756,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce unused javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 422807,
            "auditId": "unused-javascript",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Enable and verify text compression",
            "urgency": "medium",
            "estimatedSavingsBytes": 1313541,
            "auditId": "uses-text-compression",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce DOM complexity and redundant markup",
            "urgency": "medium",
            "estimatedSavingsBytes": 0,
            "auditId": "dom-size",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 41,
        "urgency": "high",
        "totalTransferBytes": 3252542,
        "heavyRequestCount": 7,
        "heavyBytes": 2387397,
        "heavyRatio": 0.7340095838885401,
        "heavyRequests": [
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "transferSize": 1177193,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/dam/jcr:e31ce16e-02c8-487e-b5dc-8163515b1293/oficina-atencion.jpg",
            "transferSize": 498764,
            "resourceType": "image",
            "mimeType": "image/jpeg",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "transferSize": 254411,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "transferSize": 159823,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "transferSize": 145384,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://administracion.gob.es/dam/jcr:84743164-0af1-4ff3-9ba5-6b9d20d0a892/guias-tematicas.png",
            "transferSize": 108038,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/libs/jquery.mCustomScrollbar.css",
            "transferSize": 43784,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 1220977
          },
          {
            "resourceType": "image",
            "count": 3,
            "transferBytes": 766625
          },
          {
            "resourceType": "script",
            "count": 2,
            "transferBytes": 399795
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "administracion.gob.es",
            "count": 6,
            "transferBytes": 2242013
          },
          {
            "domain": "www.googletagmanager.com",
            "count": 1,
            "transferBytes": 145384
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Lazy-load offscreen images and media galleries",
            "urgency": "high",
            "estimatedSavingsBytes": 247347,
            "strategy": "Load imagery only when it enters the viewport or when a user opens the relevant section.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Split JavaScript by route or interaction",
            "urgency": "high",
            "estimatedSavingsBytes": 422807,
            "strategy": "Move non-critical bundles behind route-level or event-driven imports so they are only fetched on demand.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy stylesheet asset from administracion.gob.es",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "strategy": "Split this stylesheet so component-specific CSS is delivered only when the component is rendered.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from administracion.gob.es",
            "urgency": "high",
            "estimatedSavingsBytes": 498764,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://administracion.gob.es/dam/jcr:e31ce16e-02c8-487e-b5dc-8163515b1293/oficina-atencion.jpg",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 254411,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0,
          "displayValue": "15.6 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 15.6 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": 0.05,
          "displayValue": "11.3 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- Current value: 11.3 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": 0,
          "displayValue": "Est savings of 413 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- Current value: Est savings of 413 KiB\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 1,162 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 1,162 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0,
          "displayValue": "Est savings of 688 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 688 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": 0,
          "displayValue": "Est savings of 242 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- Current value: Est savings of 242 KiB\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 8,960 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 8,960 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": 0,
          "displayValue": "Est savings of 1,283 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- Current value: Est savings of 1,283 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 30 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- Current value: Est savings of 30 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "total-byte-weight",
          "title": "Avoid enormous network payloads",
          "description": "Large network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).",
          "score": 0.5,
          "displayValue": "Total size was 3,176 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "5",
            "categoryName": "Business Strategy And Product Management",
            "id": "25",
            "title": "Define performance and environmental budgets",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets",
            "subheading": "Set budgets, taking people, planet, and performance into account alongside baselines, targets, evidence, and resources to help meet KPIs."
          },
          "issueTemplate": "## Improve Avoid enormous network payloads\n\n- Lighthouse audit: total-byte-weight\n- Current value: Total size was 3,176 KiB\n- WSG guideline: 25 Define performance and environmental budgets\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#define-performance-and-environmental-budgets\n\n### Why this matters\nLarge network payloads cost users real money and are highly correlated with long load times. [Learn how to reduce payload sizes](https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "dom-size",
          "title": "Avoid an excessive DOM size",
          "description": "A large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).",
          "score": 0.5,
          "displayValue": "1,027 elements",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Avoid an excessive DOM size\n\n- Lighthouse audit: dom-size\n- Current value: 1,027 elements\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nA large DOM will increase memory usage, cause longer [style calculations](https://developers.google.com/web/fundamentals/performance/rendering/reduce-the-scope-and-complexity-of-style-calculations), and produce costly [layout reflows](https://developers.google.com/speed/articles/reflow). [Learn how to avoid an excessive DOM size](https://developer.chrome.com/docs/lighthouse/performance/dom-size/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://administracion.gob.es/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/trabajo-jubilacion/condiciones-trabajo/jornada-permisos",
      "status": "ok",
      "finalUrl": "https://administracion.gob.es/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/trabajo-jubilacion/condiciones-trabajo/jornada-permisos",
      "performanceScore": 0.56,
      "bestPracticesScore": 0.79,
      "transferBytes": 2205593,
      "co2Grams": 0.8449216542702002,
      "greenWeb": {
        "page": {
          "hostname": "administracion.gob.es",
          "checked": true,
          "status": "not-green",
          "green": false,
          "hostedBy": null,
          "hostedByWebsite": null,
          "listedProvider": null,
          "partner": null,
          "modified": "2026-03-29T13:38:28.588564",
          "supportingDocuments": [],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/administracion.gob.es",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290068,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "not-green",
          "externalOriginCount": 1,
          "greenCount": 1,
          "notGreenCount": 1,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 70,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/buscador/buscadorsimple.htm|input|text|q|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "q",
            "formContext": "form|get|/buscador/buscadorsimple.htm",
            "hasLabel": false,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 70,
              "urgency": "high",
              "issues": [
                "Missing associated label",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add a programmatic label using <label>, aria-label, or aria-labelledby.",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "Missing associated label",
            "urgency": "high",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 35,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": false,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Working hours, leave and holidays - Conditions of employment, including for posted workers - Work and retirement - Citizens - Your rights and obligations in the EU - Tu espacio europeo - Punto de Acceso General",
          "lang": "en",
          "charset": "",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Information about working hours, overtime, paid leave, annual holidays, temporary incapacity and medical examinations.",
          "robots": "all",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 55,
          "tabletSmallTapTargets": 85,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 399,
            "viewportHeight": 864,
            "contentWidth": 399,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 55,
            "oversizedMedia": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 829,
            "viewportHeight": 1193,
            "contentWidth": 829,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 85,
            "oversizedMedia": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 55 small targets on mobile and 85 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 31,
        "urgency": "medium",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": false,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "connection": "Keep-Alive",
            "content-encoding": "gzip",
            "content-length": "16788",
            "content-type": "text/html;charset=UTF-8",
            "date": "Mon, 30 Mar 2026 00:43:41 GMT",
            "keep-alive": "timeout=15, max=500",
            "referrer-policy": "origin-when-cross-origin,strict-origin-when-cross-origin",
            "server": "Microsoft-IIS/5.0",
            "set-cookie": "VISITOR=returning; Path=/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/ciudadanos; HttpOnly; Secure; SameSite=None\nTS01a8e1d0=01d9c3d318675a9157d30da37cb02235ed5c5a546da76ff9a05ac14472dedf18431353a89662ae0b9455010cf4503c85157db36d672b9513dc51166213d651a68ae2bdd08db8841f1b06602086ef18d6b8551f389e; Path=/; HttpOnly; Secure; SameSite=None\nTS01cc21ed=01d9c3d31875eb4ee065abf109a5ef141663ea9e5662999d88da62791f603954b0657e3ad206abe0e840a1f31af532847905d0382b90b7a84781f287b0f8ea376c270e95758790e5f992ab8a462f1118463bf9b8565956db104bfe20987b3f54c98e7c3998; path=/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/ciudadanos; HttpOnly; Secure; SameSite=None",
            "strict-transport-security": "max-age=63072000; preload",
            "vary": "Accept-Encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1;mode=block",
            "traceresponse": "00-be7ae8dc31afedf62e53885aba269391-db609b927a6df3ff-01",
            "x-dt-tracestate": "acd5d8fe-344161ca@dt"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add a Content-Security-Policy header",
            "urgency": "high",
            "detail": "Add an appropriate CSP to reduce script injection and resource loading risk."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 30,
        "urgency": "medium",
        "origin": "https://administracion.gob.es",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://administracion.gob.es/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/favicon.ico",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 2403496.2,
        "checks": {
          "hasEffectiveTextCompression": false
        },
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "estimatedSavingsBytes": 1313541,
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "estimatedSavingsBytes": 891965,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "estimatedSavingsBytes": 126680.2,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "estimatedSavingsBytes": 63759,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "estimatedSavingsBytes": 7551,
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings."
          }
        ],
        "recommendations": [
          {
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
          },
          {
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
          },
          {
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 7.37 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 4247212.2,
        "totalEstimatedBlockingMs": 9175,
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable text compression",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat.",
            "estimatedSavingsBytes": 1313541,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,283 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-text-compression"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 1195463,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,167 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 891965,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 871 KiB",
            "urgency": "high",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unused-javascript",
            "title": "Remove unused JavaScript",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code.",
            "estimatedSavingsBytes": 544808,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 532 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-javascript"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9175,
            "displayValue": "Est savings of 9,180 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 126680.2,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 124 KiB",
            "urgency": "medium",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "offscreen-images",
            "title": "Lazy-load offscreen images",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed.",
            "estimatedSavingsBytes": 96733,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 94 KiB",
            "urgency": "medium",
            "sourceAuditId": "offscreen-images"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 63759,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 62 KiB",
            "urgency": "medium",
            "sourceAuditId": "unminified-javascript"
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss.",
            "estimatedSavingsBytes": 7551,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-optimized-images"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 6712,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-responsive-images"
          }
        ],
        "recommendations": [
          {
            "title": "Enable text compression",
            "urgency": "high",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat. Estimated byte savings: 1.25 MB."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "high",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 1.14 MB."
          },
          {
            "title": "Minify CSS",
            "urgency": "high",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 871.06 KB."
          },
          {
            "title": "Remove unused JavaScript",
            "urgency": "high",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code. Estimated byte savings: 532.04 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 9175 ms."
          },
          {
            "title": "Serve images in next-gen formats",
            "urgency": "medium",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 123.71 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1895860
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.81 MB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.81 MB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 30,
        "urgency": "high",
        "transferBytes": 2205593,
        "css": {
          "unusedBytes": 1195463,
          "ratio": 0.5420143244923248,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 544808,
          "duplicatedBytes": 0,
          "ratio": 0.24701202805776043,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "high",
            "estimatedSavingsBytes": 1195463,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          },
          {
            "area": "javascript",
            "title": "Remove unused JavaScript and feature bundles",
            "urgency": "high",
            "estimatedSavingsBytes": 544808,
            "strategy": "Drop unused packages and feature code, or move them behind route-level or interaction-triggered imports.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 35,
        "urgency": "high",
        "transferBytes": 2205593,
        "estimatedDeferrableBytes": 1837004,
        "renderBlockingMs": 9175,
        "breakdown": {
          "offscreenImageSavings": 96733,
          "unusedJavascriptSavings": 544808,
          "unusedCssSavings": 1195463
        },
        "candidates": [
          {
            "title": "Lazy-load offscreen images",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 96733,
            "strategy": "Load below-the-fold images only when they approach the viewport.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Defer non-critical JavaScript",
            "area": "javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 544808,
            "strategy": "Split bundles and load feature code on interaction or route transition.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1195463,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9175,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy stylesheet from administracion.gob.es",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from administracion.gob.es",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 254411,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from administracion.gob.es",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.googletagmanager.com",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 145384,
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 34,
        "urgency": "medium",
        "providerCount": 1,
        "requestCount": 2,
        "transferBytes": 290068,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290068,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "medium",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "medium",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          }
        ]
      },
      "redundancy": {
        "score": 68,
        "urgency": "high",
        "transferBytes": 2205593,
        "estimatedRedundantBytes": 1740271,
        "redundancyRatio": 0.7890263525500851,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 1195463,
            "displayValue": "Est savings of 1,167 KiB"
          },
          {
            "auditId": "unused-javascript",
            "title": "Reduce unused JavaScript",
            "savingsBytes": 544808,
            "displayValue": "Est savings of 532 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "high",
            "estimatedSavingsBytes": 1195463,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce unused javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 544808,
            "auditId": "unused-javascript",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Enable and verify text compression",
            "urgency": "medium",
            "estimatedSavingsBytes": 1313541,
            "auditId": "uses-text-compression",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 47,
        "urgency": "high",
        "totalTransferBytes": 2205593,
        "heavyRequestCount": 6,
        "heavyBytes": 1925279,
        "heavyRatio": 0.8729076488726615,
        "heavyRequests": [
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "transferSize": 1177193,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "transferSize": 254411,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "transferSize": 159823,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "transferSize": 145384,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-4YNNM3J1E0&cx=c&gtm=4e63p1",
            "transferSize": 144684,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/libs/jquery.mCustomScrollbar.css",
            "transferSize": 43784,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 1220977
          },
          {
            "resourceType": "script",
            "count": 3,
            "transferBytes": 544479
          },
          {
            "resourceType": "image",
            "count": 1,
            "transferBytes": 159823
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "administracion.gob.es",
            "count": 4,
            "transferBytes": 1635211
          },
          {
            "domain": "www.googletagmanager.com",
            "count": 2,
            "transferBytes": 290068
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Lazy-load offscreen images and media galleries",
            "urgency": "medium",
            "estimatedSavingsBytes": 96733,
            "strategy": "Load imagery only when it enters the viewport or when a user opens the relevant section.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Split JavaScript by route or interaction",
            "urgency": "high",
            "estimatedSavingsBytes": 544808,
            "strategy": "Move non-critical bundles behind route-level or event-driven imports so they are only fetched on demand.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy stylesheet asset from administracion.gob.es",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "strategy": "Split this stylesheet so component-specific CSS is delivered only when the component is rendered.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 254411,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0,
          "displayValue": "11.7 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 11.7 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": 0.06,
          "displayValue": "11.1 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- Current value: 11.1 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": 0,
          "displayValue": "Est savings of 532 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- Current value: Est savings of 532 KiB\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 1,167 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 1,167 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 9,180 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 9,180 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": 0,
          "displayValue": "Est savings of 1,283 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- Current value: Est savings of 1,283 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 124 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 124 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 7 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- Current value: Est savings of 7 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 94 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- Current value: Est savings of 94 KiB\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://administracion.gob.es/pag_Home/ca/Tu-espacio-europeo/derechos-obligaciones/empresas/inicio-gestion-cierre/derechos/dominios-es",
      "status": "ok",
      "finalUrl": "https://administracion.gob.es/pag_Home/ca/Tu-espacio-europeo/derechos-obligaciones/empresas/inicio-gestion-cierre/derechos/dominios-es",
      "performanceScore": 0.55,
      "bestPracticesScore": 0.79,
      "transferBytes": 2192152,
      "co2Grams": 0.8397726571728001,
      "greenWeb": {
        "page": {
          "hostname": "administracion.gob.es",
          "checked": true,
          "status": "not-green",
          "green": false,
          "hostedBy": null,
          "hostedByWebsite": null,
          "listedProvider": null,
          "partner": null,
          "modified": "2026-03-29T13:38:28.588564",
          "supportingDocuments": [],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/administracion.gob.es",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290073,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "not-green",
          "externalOriginCount": 1,
          "greenCount": 1,
          "notGreenCount": 1,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 70,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/buscador/buscadorsimple.htm|input|text|q|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "q",
            "formContext": "form|get|/buscador/buscadorsimple.htm",
            "hasLabel": false,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 70,
              "urgency": "high",
              "issues": [
                "Missing associated label",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add a programmatic label using <label>, aria-label, or aria-labelledby.",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "Missing associated label",
            "urgency": "high",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 25,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": true,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": false,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Dominios .es - Derechos de propiedad industrial e intelectual - Puesta en marcha, gestión y cierre de una empresa - Empresas - Tus derechos y obligaciones en la UE - Tu espacio europeo - Punto de Acceso General",
          "lang": "ca",
          "charset": "",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Conoce qué es y como registrar un Dominio.es",
          "robots": "all",
          "canonical": "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/empresas/inicio-gestion-cierre/derechos/dominios-es",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 37,
          "tabletSmallTapTargets": 72,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 399,
            "viewportHeight": 864,
            "contentWidth": 399,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 37,
            "oversizedMedia": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 829,
            "viewportHeight": 1193,
            "contentWidth": 829,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 72,
            "oversizedMedia": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 37 small targets on mobile and 72 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 33,
        "urgency": "medium",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": false,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 2,
          "externalScriptsWithoutIntegrity": 2,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "connection": "Keep-Alive",
            "content-encoding": "gzip",
            "content-type": "text/html;charset=UTF-8",
            "date": "Mon, 30 Mar 2026 00:44:07 GMT",
            "keep-alive": "timeout=15, max=500",
            "referrer-policy": "origin-when-cross-origin,strict-origin-when-cross-origin",
            "server": "Microsoft-IIS/5.0",
            "set-cookie": "VISITOR=returning; Path=/pag_Home/ca/Tu-espacio-europeo/derechos-obligaciones/empresas; HttpOnly; Secure; SameSite=None\nTS01a8e1d0=01d9c3d318675a9157d30da37cb02235ed5c5a546da76ff9a05ac14472dedf18431353a89662ae0b9455010cf4503c85157db36d672b9513dc51166213d651a68ae2bdd08db8841f1b06602086ef18d6b8551f389e; Path=/; HttpOnly; Secure; SameSite=None\nTS013701fe=01d9c3d3183d0ab5e35f0a4d3b0e06f02e6973180380529b1b9ba56384d07a19b66567890ae44783a444bdd5d48d6a967bacc4b9ad4bff902aea9909935fb9326af3d6d004f98a4d48eaff3a52021502918d296d1fe81761193e34385adc30c5a064c0078b; path=/pag_Home/ca/Tu-espacio-europeo/derechos-obligaciones/empresas; HttpOnly; Secure; SameSite=None",
            "strict-transport-security": "max-age=63072000; preload",
            "transfer-encoding": "chunked",
            "vary": "Accept-Encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1;mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add a Content-Security-Policy header",
            "urgency": "high",
            "detail": "Add an appropriate CSP to reduce script injection and resource loading risk."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "2 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 30,
        "urgency": "medium",
        "origin": "https://administracion.gob.es",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://administracion.gob.es/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/favicon.ico",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 2405028.2,
        "checks": {
          "hasEffectiveTextCompression": false
        },
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "estimatedSavingsBytes": 1315073,
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "estimatedSavingsBytes": 891965,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "estimatedSavingsBytes": 126680.2,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "estimatedSavingsBytes": 63759,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "estimatedSavingsBytes": 7551,
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings."
          }
        ],
        "recommendations": [
          {
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
          },
          {
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
          },
          {
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 7.37 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 4248063.2,
        "totalEstimatedBlockingMs": 9544,
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable text compression",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat.",
            "estimatedSavingsBytes": 1315073,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,284 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-text-compression"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 1197859,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,170 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 891965,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 871 KiB",
            "urgency": "high",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unused-javascript",
            "title": "Remove unused JavaScript",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code.",
            "estimatedSavingsBytes": 547349,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 535 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-javascript"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9544,
            "displayValue": "Est savings of 9,540 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 126680.2,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 124 KiB",
            "urgency": "medium",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "offscreen-images",
            "title": "Lazy-load offscreen images",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed.",
            "estimatedSavingsBytes": 91115,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 89 KiB",
            "urgency": "medium",
            "sourceAuditId": "offscreen-images"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 63759,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 62 KiB",
            "urgency": "medium",
            "sourceAuditId": "unminified-javascript"
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss.",
            "estimatedSavingsBytes": 7551,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-optimized-images"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 6712,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-responsive-images"
          }
        ],
        "recommendations": [
          {
            "title": "Enable text compression",
            "urgency": "high",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat. Estimated byte savings: 1.25 MB."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "high",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 1.14 MB."
          },
          {
            "title": "Minify CSS",
            "urgency": "high",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 871.06 KB."
          },
          {
            "title": "Remove unused JavaScript",
            "urgency": "high",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code. Estimated byte savings: 534.52 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 9544 ms."
          },
          {
            "title": "Serve images in next-gen formats",
            "urgency": "medium",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 123.71 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 4,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 2,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "2 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1885413
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.80 MB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.80 MB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 30,
        "urgency": "high",
        "transferBytes": 2192152,
        "css": {
          "unusedBytes": 1197859,
          "ratio": 0.5464306307226872,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 547349,
          "duplicatedBytes": 0,
          "ratio": 0.2496856969772169,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "high",
            "estimatedSavingsBytes": 1197859,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          },
          {
            "area": "javascript",
            "title": "Remove unused JavaScript and feature bundles",
            "urgency": "high",
            "estimatedSavingsBytes": 547349,
            "strategy": "Drop unused packages and feature code, or move them behind route-level or interaction-triggered imports.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 35,
        "urgency": "high",
        "transferBytes": 2192152,
        "estimatedDeferrableBytes": 1836323,
        "renderBlockingMs": 9544,
        "breakdown": {
          "offscreenImageSavings": 91115,
          "unusedJavascriptSavings": 547349,
          "unusedCssSavings": 1197859
        },
        "candidates": [
          {
            "title": "Lazy-load offscreen images",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 91115,
            "strategy": "Load below-the-fold images only when they approach the viewport.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Defer non-critical JavaScript",
            "area": "javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 547349,
            "strategy": "Split bundles and load feature code on interaction or route transition.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1197859,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9544,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy stylesheet from administracion.gob.es",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from administracion.gob.es",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 254418,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from administracion.gob.es",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.googletagmanager.com",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 145384,
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 34,
        "urgency": "medium",
        "providerCount": 1,
        "requestCount": 2,
        "transferBytes": 290073,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290073,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "medium",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "medium",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          }
        ]
      },
      "redundancy": {
        "score": 69,
        "urgency": "high",
        "transferBytes": 2192152,
        "estimatedRedundantBytes": 1745208,
        "redundancyRatio": 0.796116327699904,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 1197859,
            "displayValue": "Est savings of 1,170 KiB"
          },
          {
            "auditId": "unused-javascript",
            "title": "Reduce unused JavaScript",
            "savingsBytes": 547349,
            "displayValue": "Est savings of 535 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "high",
            "estimatedSavingsBytes": 1197859,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce unused javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 547349,
            "auditId": "unused-javascript",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Enable and verify text compression",
            "urgency": "medium",
            "estimatedSavingsBytes": 1315073,
            "auditId": "uses-text-compression",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 47,
        "urgency": "high",
        "totalTransferBytes": 2192152,
        "heavyRequestCount": 6,
        "heavyBytes": 1925291,
        "heavyRatio": 0.8782652845240658,
        "heavyRequests": [
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "transferSize": 1177193,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "transferSize": 254418,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "transferSize": 159823,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "transferSize": 145384,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-4YNNM3J1E0&cx=c&gtm=4e63p1",
            "transferSize": 144689,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/libs/jquery.mCustomScrollbar.css",
            "transferSize": 43784,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 1220977
          },
          {
            "resourceType": "script",
            "count": 3,
            "transferBytes": 544491
          },
          {
            "resourceType": "image",
            "count": 1,
            "transferBytes": 159823
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "administracion.gob.es",
            "count": 4,
            "transferBytes": 1635218
          },
          {
            "domain": "www.googletagmanager.com",
            "count": 2,
            "transferBytes": 290073
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Lazy-load offscreen images and media galleries",
            "urgency": "medium",
            "estimatedSavingsBytes": 91115,
            "strategy": "Load imagery only when it enters the viewport or when a user opens the relevant section.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Split JavaScript by route or interaction",
            "urgency": "high",
            "estimatedSavingsBytes": 547349,
            "strategy": "Move non-critical bundles behind route-level or event-driven imports so they are only fetched on demand.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy stylesheet asset from administracion.gob.es",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "strategy": "Split this stylesheet so component-specific CSS is delivered only when the component is rendered.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 254418,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0,
          "displayValue": "12.0 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 12.0 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": 0.03,
          "displayValue": "12.5 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- Current value: 12.5 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": 0,
          "displayValue": "Est savings of 535 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- Current value: Est savings of 535 KiB\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 1,170 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 1,170 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 9,540 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 9,540 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": 0,
          "displayValue": "Est savings of 1,284 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- Current value: Est savings of 1,284 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 124 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 124 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 7 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- Current value: Est savings of 7 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 89 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- Current value: Est savings of 89 KiB\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://administracion.gob.es/pag_Home/ca/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/trabajo-jubilacion/igualdad",
      "status": "ok",
      "finalUrl": "https://administracion.gob.es/pag_Home/ca/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/trabajo-jubilacion/igualdad",
      "performanceScore": 0.55,
      "bestPracticesScore": 0.79,
      "transferBytes": 2226105,
      "co2Grams": 0.852779419947,
      "greenWeb": {
        "page": {
          "hostname": "administracion.gob.es",
          "checked": true,
          "status": "not-green",
          "green": false,
          "hostedBy": null,
          "hostedByWebsite": null,
          "listedProvider": null,
          "partner": null,
          "modified": "2026-03-29T13:38:28.588564",
          "supportingDocuments": [],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/administracion.gob.es",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290070,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "not-green",
          "externalOriginCount": 1,
          "greenCount": 1,
          "notGreenCount": 1,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 70,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/buscador/buscadorsimple.htm|input|text|q|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "q",
            "formContext": "form|get|/buscador/buscadorsimple.htm",
            "hasLabel": false,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 70,
              "urgency": "high",
              "issues": [
                "Missing associated label",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add a programmatic label using <label>, aria-label, or aria-labelledby.",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "Missing associated label",
            "urgency": "high",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 25,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": true,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": false,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Igualdad de trato y no discriminación - Trabajo y jubilación - Ciudadanos - Tus derechos y obligaciones en la UE - Tu espacio europeo - Punto de Acceso General",
          "lang": "ca",
          "charset": "",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Conoce el derecho a la no discriminación y la igualdad salarial por razón de sexo y entre trabajadores temporales y fijos",
          "robots": "all",
          "canonical": "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/trabajo-jubilacion/igualdad",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 34,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 49,
          "tabletSmallTapTargets": 77,
          "fixedWidthOffenders": 2,
          "oversizedMedia": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 399,
            "viewportHeight": 864,
            "contentWidth": 399,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 2,
            "smallTapTargets": 49,
            "oversizedMedia": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 829,
            "viewportHeight": 1193,
            "contentWidth": 829,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 77,
            "oversizedMedia": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 49 small targets on mobile and 77 on tablet."
          },
          {
            "title": "Refactor fixed-width components",
            "urgency": "medium",
            "detail": "2 element(s) exceeded viewport width in tested layouts; use responsive component constraints."
          }
        ]
      },
      "securityLight": {
        "score": 31,
        "urgency": "medium",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": false,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "connection": "Keep-Alive",
            "content-encoding": "gzip",
            "content-length": "17549",
            "content-type": "text/html;charset=UTF-8",
            "date": "Mon, 30 Mar 2026 00:44:32 GMT",
            "keep-alive": "timeout=15, max=500",
            "referrer-policy": "origin-when-cross-origin,strict-origin-when-cross-origin",
            "server": "Microsoft-IIS/5.0",
            "set-cookie": "VISITOR=returning; Path=/pag_Home/ca/Tu-espacio-europeo/derechos-obligaciones/ciudadanos; HttpOnly; Secure; SameSite=None\nTS01a8e1d0=01d9c3d318675a9157d30da37cb02235ed5c5a546da76ff9a05ac14472dedf18431353a89662ae0b9455010cf4503c85157db36d672b9513dc51166213d651a68ae2bdd08db8841f1b06602086ef18d6b8551f389e; Path=/; HttpOnly; Secure; SameSite=None\nTS01e460c5=01d9c3d31875eb4ee065abf109a5ef141663ea9e5662999d88da62791f603954b0657e3ad206abe0e840a1f31af532847905d0382b90b7a84781f287b0f8ea376c270e95758790e5f992ab8a462f1118463bf9b8565956db104bfe20987b3f54c98e7c3998; path=/pag_Home/ca/Tu-espacio-europeo/derechos-obligaciones/ciudadanos; HttpOnly; Secure; SameSite=None",
            "strict-transport-security": "max-age=63072000; preload",
            "vary": "Accept-Encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1;mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add a Content-Security-Policy header",
            "urgency": "high",
            "detail": "Add an appropriate CSP to reduce script injection and resource loading risk."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 30,
        "urgency": "medium",
        "origin": "https://administracion.gob.es",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://administracion.gob.es/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/favicon.ico",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 2403496.2,
        "checks": {
          "hasEffectiveTextCompression": false
        },
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "estimatedSavingsBytes": 1313541,
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "estimatedSavingsBytes": 891965,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "estimatedSavingsBytes": 126680.2,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "estimatedSavingsBytes": 63759,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "estimatedSavingsBytes": 7551,
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings."
          }
        ],
        "recommendations": [
          {
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
          },
          {
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
          },
          {
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 7.37 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 4266942.2,
        "totalEstimatedBlockingMs": 9155,
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable text compression",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat.",
            "estimatedSavingsBytes": 1313541,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,283 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-text-compression"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 1194987,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,167 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 891965,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 871 KiB",
            "urgency": "high",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unused-javascript",
            "title": "Remove unused JavaScript",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code.",
            "estimatedSavingsBytes": 547291,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 534 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-javascript"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9155,
            "displayValue": "Est savings of 9,160 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 126680.2,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 124 KiB",
            "urgency": "medium",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "offscreen-images",
            "title": "Lazy-load offscreen images",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed.",
            "estimatedSavingsBytes": 114456,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 112 KiB",
            "urgency": "medium",
            "sourceAuditId": "offscreen-images"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 63759,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 62 KiB",
            "urgency": "medium",
            "sourceAuditId": "unminified-javascript"
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss.",
            "estimatedSavingsBytes": 7551,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-optimized-images"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 6712,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-responsive-images"
          }
        ],
        "recommendations": [
          {
            "title": "Enable text compression",
            "urgency": "high",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat. Estimated byte savings: 1.25 MB."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "high",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 1.14 MB."
          },
          {
            "title": "Minify CSS",
            "urgency": "high",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 871.06 KB."
          },
          {
            "title": "Remove unused JavaScript",
            "urgency": "high",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code. Estimated byte savings: 534.46 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 9155 ms."
          },
          {
            "title": "Serve images in next-gen formats",
            "urgency": "medium",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 123.71 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1915646
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.83 MB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.83 MB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 30,
        "urgency": "high",
        "transferBytes": 2226105,
        "css": {
          "unusedBytes": 1194987,
          "ratio": 0.5368062153402468,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 547291,
          "duplicatedBytes": 0,
          "ratio": 0.2458513861655223,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "high",
            "estimatedSavingsBytes": 1194987,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          },
          {
            "area": "javascript",
            "title": "Remove unused JavaScript and feature bundles",
            "urgency": "high",
            "estimatedSavingsBytes": 547291,
            "strategy": "Drop unused packages and feature code, or move them behind route-level or interaction-triggered imports.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 35,
        "urgency": "high",
        "transferBytes": 2226105,
        "estimatedDeferrableBytes": 1856734,
        "renderBlockingMs": 9155,
        "breakdown": {
          "offscreenImageSavings": 114456,
          "unusedJavascriptSavings": 547291,
          "unusedCssSavings": 1194987
        },
        "candidates": [
          {
            "title": "Lazy-load offscreen images",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 114456,
            "strategy": "Load below-the-fold images only when they approach the viewport.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Defer non-critical JavaScript",
            "area": "javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 547291,
            "strategy": "Split bundles and load feature code on interaction or route transition.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1194987,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9155,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy stylesheet from administracion.gob.es",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from administracion.gob.es",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 254418,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from administracion.gob.es",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 159817,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.googletagmanager.com",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 145384,
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 34,
        "urgency": "medium",
        "providerCount": 1,
        "requestCount": 2,
        "transferBytes": 290070,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290070,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "medium",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "medium",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          }
        ]
      },
      "redundancy": {
        "score": 68,
        "urgency": "high",
        "transferBytes": 2226105,
        "estimatedRedundantBytes": 1742278,
        "redundancyRatio": 0.782657601505769,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 1194987,
            "displayValue": "Est savings of 1,167 KiB"
          },
          {
            "auditId": "unused-javascript",
            "title": "Reduce unused JavaScript",
            "savingsBytes": 547291,
            "displayValue": "Est savings of 534 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "high",
            "estimatedSavingsBytes": 1194987,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce unused javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 547291,
            "auditId": "unused-javascript",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Enable and verify text compression",
            "urgency": "medium",
            "estimatedSavingsBytes": 1313541,
            "auditId": "uses-text-compression",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 47,
        "urgency": "high",
        "totalTransferBytes": 2226105,
        "heavyRequestCount": 6,
        "heavyBytes": 1925282,
        "heavyRatio": 0.8648657632950827,
        "heavyRequests": [
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "transferSize": 1177193,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "transferSize": 254418,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "transferSize": 159817,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "transferSize": 145384,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-4YNNM3J1E0&cx=c&gtm=4e63p1",
            "transferSize": 144686,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/libs/jquery.mCustomScrollbar.css",
            "transferSize": 43784,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 1220977
          },
          {
            "resourceType": "script",
            "count": 3,
            "transferBytes": 544488
          },
          {
            "resourceType": "image",
            "count": 1,
            "transferBytes": 159817
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "administracion.gob.es",
            "count": 4,
            "transferBytes": 1635212
          },
          {
            "domain": "www.googletagmanager.com",
            "count": 2,
            "transferBytes": 290070
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Lazy-load offscreen images and media galleries",
            "urgency": "medium",
            "estimatedSavingsBytes": 114456,
            "strategy": "Load imagery only when it enters the viewport or when a user opens the relevant section.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Split JavaScript by route or interaction",
            "urgency": "high",
            "estimatedSavingsBytes": 547291,
            "strategy": "Move non-critical bundles behind route-level or event-driven imports so they are only fetched on demand.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy stylesheet asset from administracion.gob.es",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "strategy": "Split this stylesheet so component-specific CSS is delivered only when the component is rendered.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 254418,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 159817,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0,
          "displayValue": "12.4 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 12.4 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": 0.02,
          "displayValue": "13.0 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- Current value: 13.0 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": 0,
          "displayValue": "Est savings of 534 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- Current value: Est savings of 534 KiB\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 1,167 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 1,167 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 9,160 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 9,160 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": 0,
          "displayValue": "Est savings of 1,283 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- Current value: Est savings of 1,283 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 124 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 124 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 7 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- Current value: Est savings of 7 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 112 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- Current value: Est savings of 112 KiB\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://administracion.gob.es/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/familia/menores/gestacion-sustitucion",
      "status": "ok",
      "finalUrl": "https://administracion.gob.es/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/familia/menores/gestacion-sustitucion",
      "performanceScore": 0.55,
      "bestPracticesScore": 0.79,
      "transferBytes": 2187895,
      "co2Grams": 0.838141879653,
      "greenWeb": {
        "page": {
          "hostname": "administracion.gob.es",
          "checked": true,
          "status": "not-green",
          "green": false,
          "hostedBy": null,
          "hostedByWebsite": null,
          "listedProvider": null,
          "partner": null,
          "modified": "2026-03-29T13:38:28.588564",
          "supportingDocuments": [],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/administracion.gob.es",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290073,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "not-green",
          "externalOriginCount": 1,
          "greenCount": 1,
          "notGreenCount": 1,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 70,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/buscador/buscadorsimple.htm|input|text|q|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "q",
            "formContext": "form|get|/buscador/buscadorsimple.htm",
            "hasLabel": false,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 70,
              "urgency": "high",
              "issues": [
                "Missing associated label",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add a programmatic label using <label>, aria-label, or aria-labelledby.",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "Missing associated label",
            "urgency": "high",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 35,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": false,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Gestational surrogacy - Minor children - Citizens’ and family rights - Citizens - Your rights and obligations in the EU - Tu espacio europeo - Punto de Acceso General",
          "lang": "en",
          "charset": "",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Know what gestational surrogacy is, whether it is legal in Spain and the registration requirements in Spain and abroad.",
          "robots": "all",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 36,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 31,
          "tabletSmallTapTargets": 59,
          "fixedWidthOffenders": 3,
          "oversizedMedia": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 399,
            "viewportHeight": 864,
            "contentWidth": 399,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 2,
            "smallTapTargets": 31,
            "oversizedMedia": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 829,
            "viewportHeight": 1193,
            "contentWidth": 829,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 1,
            "smallTapTargets": 59,
            "oversizedMedia": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 31 small targets on mobile and 59 on tablet."
          },
          {
            "title": "Refactor fixed-width components",
            "urgency": "medium",
            "detail": "3 element(s) exceeded viewport width in tested layouts; use responsive component constraints."
          }
        ]
      },
      "securityLight": {
        "score": 31,
        "urgency": "medium",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": false,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "connection": "Keep-Alive",
            "content-encoding": "gzip",
            "content-type": "text/html;charset=UTF-8",
            "date": "Mon, 30 Mar 2026 00:44:57 GMT",
            "keep-alive": "timeout=15, max=500",
            "referrer-policy": "origin-when-cross-origin,strict-origin-when-cross-origin",
            "server": "Microsoft-IIS/5.0",
            "set-cookie": "VISITOR=returning; Path=/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/ciudadanos; HttpOnly; Secure; SameSite=None\nTS01a8e1d0=01d9c3d318675a9157d30da37cb02235ed5c5a546da76ff9a05ac14472dedf18431353a89662ae0b9455010cf4503c85157db36d672b9513dc51166213d651a68ae2bdd08db8841f1b06602086ef18d6b8551f389e; Path=/; HttpOnly; Secure; SameSite=None\nTS01cc21ed=01d9c3d31875eb4ee065abf109a5ef141663ea9e5662999d88da62791f603954b0657e3ad206abe0e840a1f31af532847905d0382b90b7a84781f287b0f8ea376c270e95758790e5f992ab8a462f1118463bf9b8565956db104bfe20987b3f54c98e7c3998; path=/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/ciudadanos; HttpOnly; Secure; SameSite=None",
            "strict-transport-security": "max-age=63072000; preload",
            "transfer-encoding": "chunked",
            "vary": "Accept-Encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1;mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add a Content-Security-Policy header",
            "urgency": "high",
            "detail": "Add an appropriate CSP to reduce script injection and resource loading risk."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 30,
        "urgency": "medium",
        "origin": "https://administracion.gob.es",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://administracion.gob.es/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/favicon.ico",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 2403496.2,
        "checks": {
          "hasEffectiveTextCompression": false
        },
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "estimatedSavingsBytes": 1313541,
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "estimatedSavingsBytes": 891965,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "estimatedSavingsBytes": 126680.2,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "estimatedSavingsBytes": 63759,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "estimatedSavingsBytes": 7551,
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings."
          }
        ],
        "recommendations": [
          {
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
          },
          {
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
          },
          {
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 7.37 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 4245574.2,
        "totalEstimatedBlockingMs": 8981,
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable text compression",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat.",
            "estimatedSavingsBytes": 1313541,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,283 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-text-compression"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 1197876,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,170 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 891965,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 871 KiB",
            "urgency": "high",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unused-javascript",
            "title": "Remove unused JavaScript",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code.",
            "estimatedSavingsBytes": 546375,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 534 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-javascript"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 8981,
            "displayValue": "Est savings of 8,980 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 126680.2,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 124 KiB",
            "urgency": "medium",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "offscreen-images",
            "title": "Lazy-load offscreen images",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed.",
            "estimatedSavingsBytes": 91115,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 89 KiB",
            "urgency": "medium",
            "sourceAuditId": "offscreen-images"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 63759,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 62 KiB",
            "urgency": "medium",
            "sourceAuditId": "unminified-javascript"
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss.",
            "estimatedSavingsBytes": 7551,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-optimized-images"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 6712,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-responsive-images"
          }
        ],
        "recommendations": [
          {
            "title": "Enable text compression",
            "urgency": "high",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat. Estimated byte savings: 1.25 MB."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "high",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 1.14 MB."
          },
          {
            "title": "Minify CSS",
            "urgency": "high",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 871.06 KB."
          },
          {
            "title": "Remove unused JavaScript",
            "urgency": "high",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code. Estimated byte savings: 533.57 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 8981 ms."
          },
          {
            "title": "Serve images in next-gen formats",
            "urgency": "medium",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 123.71 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1881896
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.79 MB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.79 MB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 30,
        "urgency": "high",
        "transferBytes": 2187895,
        "css": {
          "unusedBytes": 1197876,
          "ratio": 0.5475015939978838,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 546375,
          "duplicatedBytes": 0,
          "ratio": 0.24972633513034218,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "high",
            "estimatedSavingsBytes": 1197876,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          },
          {
            "area": "javascript",
            "title": "Remove unused JavaScript and feature bundles",
            "urgency": "high",
            "estimatedSavingsBytes": 546375,
            "strategy": "Drop unused packages and feature code, or move them behind route-level or interaction-triggered imports.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 35,
        "urgency": "high",
        "transferBytes": 2187895,
        "estimatedDeferrableBytes": 1835366,
        "renderBlockingMs": 8981,
        "breakdown": {
          "offscreenImageSavings": 91115,
          "unusedJavascriptSavings": 546375,
          "unusedCssSavings": 1197876
        },
        "candidates": [
          {
            "title": "Lazy-load offscreen images",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 91115,
            "strategy": "Load below-the-fold images only when they approach the viewport.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Defer non-critical JavaScript",
            "area": "javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 546375,
            "strategy": "Split bundles and load feature code on interaction or route transition.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1197876,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 8981,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy stylesheet from administracion.gob.es",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from administracion.gob.es",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 254418,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from administracion.gob.es",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 159817,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.googletagmanager.com",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 145384,
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 34,
        "urgency": "medium",
        "providerCount": 1,
        "requestCount": 2,
        "transferBytes": 290073,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290073,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "medium",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "medium",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          }
        ]
      },
      "redundancy": {
        "score": 66,
        "urgency": "high",
        "transferBytes": 2187895,
        "estimatedRedundantBytes": 1744251,
        "redundancyRatio": 0.797227929128226,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 1197876,
            "displayValue": "Est savings of 1,170 KiB"
          },
          {
            "auditId": "unused-javascript",
            "title": "Reduce unused JavaScript",
            "savingsBytes": 546375,
            "displayValue": "Est savings of 534 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "high",
            "estimatedSavingsBytes": 1197876,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce unused javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 546375,
            "auditId": "unused-javascript",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Enable and verify text compression",
            "urgency": "medium",
            "estimatedSavingsBytes": 1313541,
            "auditId": "uses-text-compression",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 47,
        "urgency": "high",
        "totalTransferBytes": 2187895,
        "heavyRequestCount": 6,
        "heavyBytes": 1925285,
        "heavyRatio": 0.8799713880236483,
        "heavyRequests": [
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "transferSize": 1177193,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "transferSize": 254418,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "transferSize": 159817,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "transferSize": 145384,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-4YNNM3J1E0&cx=c&gtm=4e63p1",
            "transferSize": 144689,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/libs/jquery.mCustomScrollbar.css",
            "transferSize": 43784,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 1220977
          },
          {
            "resourceType": "script",
            "count": 3,
            "transferBytes": 544491
          },
          {
            "resourceType": "image",
            "count": 1,
            "transferBytes": 159817
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "administracion.gob.es",
            "count": 4,
            "transferBytes": 1635212
          },
          {
            "domain": "www.googletagmanager.com",
            "count": 2,
            "transferBytes": 290073
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Lazy-load offscreen images and media galleries",
            "urgency": "medium",
            "estimatedSavingsBytes": 91115,
            "strategy": "Load imagery only when it enters the viewport or when a user opens the relevant section.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Split JavaScript by route or interaction",
            "urgency": "high",
            "estimatedSavingsBytes": 546375,
            "strategy": "Move non-critical bundles behind route-level or event-driven imports so they are only fetched on demand.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy stylesheet asset from administracion.gob.es",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "strategy": "Split this stylesheet so component-specific CSS is delivered only when the component is rendered.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 254418,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 159817,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0,
          "displayValue": "11.6 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 11.6 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": 0,
          "displayValue": "16.0 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- Current value: 16.0 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": 0,
          "displayValue": "Est savings of 534 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- Current value: Est savings of 534 KiB\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 1,170 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 1,170 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 8,980 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 8,980 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": 0,
          "displayValue": "Est savings of 1,283 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- Current value: Est savings of 1,283 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 124 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 124 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 7 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- Current value: Est savings of 7 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 89 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- Current value: Est savings of 89 KiB\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://administracion.gob.es/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/empresas/impuestos/especiales/electricidad",
      "status": "ok",
      "finalUrl": "https://administracion.gob.es/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/empresas/impuestos/especiales/electricidad",
      "performanceScore": 0.55,
      "bestPracticesScore": 0.79,
      "transferBytes": 2188134,
      "co2Grams": 0.8382334361076,
      "greenWeb": {
        "page": {
          "hostname": "administracion.gob.es",
          "checked": true,
          "status": "not-green",
          "green": false,
          "hostedBy": null,
          "hostedByWebsite": null,
          "listedProvider": null,
          "partner": null,
          "modified": "2026-03-29T13:38:28.588564",
          "supportingDocuments": [],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/administracion.gob.es",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290277,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "not-green",
          "externalOriginCount": 1,
          "greenCount": 1,
          "notGreenCount": 1,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 70,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/buscador/buscadorsimple.htm|input|text|q|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "q",
            "formContext": "form|get|/buscador/buscadorsimple.htm",
            "hasLabel": false,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 70,
              "urgency": "high",
              "issues": [
                "Missing associated label",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add a programmatic label using <label>, aria-label, or aria-labelledby.",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "Missing associated label",
            "urgency": "high",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 35,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": false,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Excise duty on electricity - Excise Duties - Taxes - Business - Your rights and obligations in the EU - Tu espacio europeo - Punto de Acceso General",
          "lang": "en",
          "charset": "",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Find out where the duty applies and which operations it is imposed on, as well as about exemptions, tax rates, payment, registration and records.",
          "robots": "all",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 32,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 37,
          "tabletSmallTapTargets": 65,
          "fixedWidthOffenders": 1,
          "oversizedMedia": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 399,
            "viewportHeight": 864,
            "contentWidth": 399,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 1,
            "smallTapTargets": 37,
            "oversizedMedia": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 829,
            "viewportHeight": 1193,
            "contentWidth": 829,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 65,
            "oversizedMedia": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 37 small targets on mobile and 65 on tablet."
          },
          {
            "title": "Refactor fixed-width components",
            "urgency": "medium",
            "detail": "1 element(s) exceeded viewport width in tested layouts; use responsive component constraints."
          }
        ]
      },
      "securityLight": {
        "score": 31,
        "urgency": "medium",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": false,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "connection": "Keep-Alive",
            "content-encoding": "gzip",
            "content-type": "text/html;charset=UTF-8",
            "date": "Mon, 30 Mar 2026 00:45:20 GMT",
            "keep-alive": "timeout=15, max=500",
            "referrer-policy": "origin-when-cross-origin,strict-origin-when-cross-origin",
            "server": "Microsoft-IIS/5.0",
            "set-cookie": "VISITOR=returning; Path=/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/empresas; HttpOnly; Secure; SameSite=None\nTS01a8e1d0=01d9c3d318675a9157d30da37cb02235ed5c5a546da76ff9a05ac14472dedf18431353a89662ae0b9455010cf4503c85157db36d672b9513dc51166213d651a68ae2bdd08db8841f1b06602086ef18d6b8551f389e; Path=/; HttpOnly; Secure; SameSite=None\nTS01e4c404=01d9c3d3183d0ab5e35f0a4d3b0e06f02e6973180380529b1b9ba56384d07a19b66567890ae44783a444bdd5d48d6a967bacc4b9ad4bff902aea9909935fb9326af3d6d004f98a4d48eaff3a52021502918d296d1fe81761193e34385adc30c5a064c0078b; path=/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/empresas; HttpOnly; Secure; SameSite=None",
            "strict-transport-security": "max-age=63072000; preload",
            "transfer-encoding": "chunked",
            "vary": "Accept-Encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1;mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add a Content-Security-Policy header",
            "urgency": "high",
            "detail": "Add an appropriate CSP to reduce script injection and resource loading risk."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 30,
        "urgency": "medium",
        "origin": "https://administracion.gob.es",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://administracion.gob.es/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/favicon.ico",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 2403496.2,
        "checks": {
          "hasEffectiveTextCompression": false
        },
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "estimatedSavingsBytes": 1313541,
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "estimatedSavingsBytes": 891965,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "estimatedSavingsBytes": 126680.2,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "estimatedSavingsBytes": 63759,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "estimatedSavingsBytes": 7551,
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings."
          }
        ],
        "recommendations": [
          {
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
          },
          {
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
          },
          {
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 7.37 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 4246763.2,
        "totalEstimatedBlockingMs": 8946,
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable text compression",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat.",
            "estimatedSavingsBytes": 1313541,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,283 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-text-compression"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 1197996,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,170 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 891965,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 871 KiB",
            "urgency": "high",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unused-javascript",
            "title": "Remove unused JavaScript",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code.",
            "estimatedSavingsBytes": 547444,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 535 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-javascript"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 8946,
            "displayValue": "Est savings of 8,950 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 126680.2,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 124 KiB",
            "urgency": "medium",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "offscreen-images",
            "title": "Lazy-load offscreen images",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed.",
            "estimatedSavingsBytes": 91115,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 89 KiB",
            "urgency": "medium",
            "sourceAuditId": "offscreen-images"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 63759,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 62 KiB",
            "urgency": "medium",
            "sourceAuditId": "unminified-javascript"
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss.",
            "estimatedSavingsBytes": 7551,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-optimized-images"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 6712,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-responsive-images"
          }
        ],
        "recommendations": [
          {
            "title": "Enable text compression",
            "urgency": "high",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat. Estimated byte savings: 1.25 MB."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "high",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 1.14 MB."
          },
          {
            "title": "Minify CSS",
            "urgency": "high",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 871.06 KB."
          },
          {
            "title": "Remove unused JavaScript",
            "urgency": "high",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code. Estimated byte savings: 534.61 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 8946 ms."
          },
          {
            "title": "Serve images in next-gen formats",
            "urgency": "medium",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 123.71 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1882013
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.79 MB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.79 MB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 30,
        "urgency": "high",
        "transferBytes": 2188134,
        "css": {
          "unusedBytes": 1197996,
          "ratio": 0.5474966341183858,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 547444,
          "duplicatedBytes": 0,
          "ratio": 0.25018760277021423,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "high",
            "estimatedSavingsBytes": 1197996,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          },
          {
            "area": "javascript",
            "title": "Remove unused JavaScript and feature bundles",
            "urgency": "high",
            "estimatedSavingsBytes": 547444,
            "strategy": "Drop unused packages and feature code, or move them behind route-level or interaction-triggered imports.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 35,
        "urgency": "high",
        "transferBytes": 2188134,
        "estimatedDeferrableBytes": 1836555,
        "renderBlockingMs": 8946,
        "breakdown": {
          "offscreenImageSavings": 91115,
          "unusedJavascriptSavings": 547444,
          "unusedCssSavings": 1197996
        },
        "candidates": [
          {
            "title": "Lazy-load offscreen images",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 91115,
            "strategy": "Load below-the-fold images only when they approach the viewport.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Defer non-critical JavaScript",
            "area": "javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 547444,
            "strategy": "Split bundles and load feature code on interaction or route transition.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1197996,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 8946,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy stylesheet from administracion.gob.es",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from administracion.gob.es",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 254411,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from administracion.gob.es",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 159817,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.googletagmanager.com",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 145491,
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 34,
        "urgency": "medium",
        "providerCount": 1,
        "requestCount": 2,
        "transferBytes": 290277,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290277,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "medium",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "medium",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          }
        ]
      },
      "redundancy": {
        "score": 66,
        "urgency": "high",
        "transferBytes": 2188134,
        "estimatedRedundantBytes": 1745440,
        "redundancyRatio": 0.7976842368886,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 1197996,
            "displayValue": "Est savings of 1,170 KiB"
          },
          {
            "auditId": "unused-javascript",
            "title": "Reduce unused JavaScript",
            "savingsBytes": 547444,
            "displayValue": "Est savings of 535 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "high",
            "estimatedSavingsBytes": 1197996,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce unused javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 547444,
            "auditId": "unused-javascript",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Enable and verify text compression",
            "urgency": "medium",
            "estimatedSavingsBytes": 1313541,
            "auditId": "uses-text-compression",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 47,
        "urgency": "high",
        "totalTransferBytes": 2188134,
        "heavyRequestCount": 6,
        "heavyBytes": 1925482,
        "heavyRatio": 0.8799653037702444,
        "heavyRequests": [
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "transferSize": 1177193,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "transferSize": 254411,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "transferSize": 159817,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "transferSize": 145491,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-4YNNM3J1E0&cx=c&gtm=4e63q0h2",
            "transferSize": 144786,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/libs/jquery.mCustomScrollbar.css",
            "transferSize": 43784,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 1220977
          },
          {
            "resourceType": "script",
            "count": 3,
            "transferBytes": 544688
          },
          {
            "resourceType": "image",
            "count": 1,
            "transferBytes": 159817
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "administracion.gob.es",
            "count": 4,
            "transferBytes": 1635205
          },
          {
            "domain": "www.googletagmanager.com",
            "count": 2,
            "transferBytes": 290277
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Lazy-load offscreen images and media galleries",
            "urgency": "medium",
            "estimatedSavingsBytes": 91115,
            "strategy": "Load imagery only when it enters the viewport or when a user opens the relevant section.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Split JavaScript by route or interaction",
            "urgency": "high",
            "estimatedSavingsBytes": 547444,
            "strategy": "Move non-critical bundles behind route-level or event-driven imports so they are only fetched on demand.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy stylesheet asset from administracion.gob.es",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "strategy": "Split this stylesheet so component-specific CSS is delivered only when the component is rendered.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 254411,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 159817,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0,
          "displayValue": "11.6 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 11.6 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": 0.02,
          "displayValue": "13.1 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- Current value: 13.1 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": 0,
          "displayValue": "Est savings of 535 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- Current value: Est savings of 535 KiB\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 1,170 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 1,170 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 8,950 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 8,950 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": 0,
          "displayValue": "Est savings of 1,283 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- Current value: Est savings of 1,283 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 124 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 124 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 7 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- Current value: Est savings of 7 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 89 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- Current value: Est savings of 89 KiB\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://administracion.gob.es/pag_Home/avisoLegal.html",
      "status": "ok",
      "finalUrl": "https://administracion.gob.es/pag_Home/avisoLegal.html",
      "performanceScore": 0.56,
      "bestPracticesScore": 0.79,
      "transferBytes": 2025527,
      "co2Grams": 0.7759417188978001,
      "greenWeb": {
        "page": {
          "hostname": "administracion.gob.es",
          "checked": true,
          "status": "not-green",
          "green": false,
          "hostedBy": null,
          "hostedByWebsite": null,
          "listedProvider": null,
          "partner": null,
          "modified": "2026-03-29T13:38:28.588564",
          "supportingDocuments": [],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/administracion.gob.es",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 145384,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "not-green",
          "externalOriginCount": 1,
          "greenCount": 1,
          "notGreenCount": 1,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 70,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/buscador/buscadorsimple.htm|input|text|q|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "q",
            "formContext": "form|get|/buscador/buscadorsimple.htm",
            "hasLabel": false,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 70,
              "urgency": "high",
              "issues": [
                "Missing associated label",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add a programmatic label using <label>, aria-label, or aria-labelledby.",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "Missing associated label",
            "urgency": "high",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 45,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": false,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": false,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Aviso Legal - Punto de Acceso General",
          "lang": "es",
          "charset": "",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "",
          "robots": "all",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Add meta description",
            "urgency": "medium",
            "detail": "Provide a concise description to improve machine interpretation and preview quality."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 28,
        "urgency": "low",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 10,
          "tabletSmallTapTargets": 42,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 399,
            "viewportHeight": 864,
            "contentWidth": 399,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 10,
            "oversizedMedia": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 829,
            "viewportHeight": 1193,
            "contentWidth": 829,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 42,
            "oversizedMedia": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "medium",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 10 small targets on mobile and 42 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 31,
        "urgency": "medium",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": false,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "connection": "Keep-Alive",
            "content-encoding": "gzip",
            "content-type": "text/html;charset=UTF-8",
            "date": "Mon, 30 Mar 2026 00:45:40 GMT",
            "keep-alive": "timeout=15, max=500",
            "referrer-policy": "origin-when-cross-origin,strict-origin-when-cross-origin",
            "server": "Microsoft-IIS/5.0",
            "set-cookie": "VISITOR=returning; Path=/pag_Home/avisoLegal.html; HttpOnly; Secure; SameSite=None\nTS01a8e1d0=01d9c3d318e789ba678d5f510903cba2d9619d84e41bf1c929f6e26ea46b7f1e54ca58bc9b6bd16f994b3bb7e0caef0d22a250a0b899a9ab291180f115e665a2bf2fcf1bc0e29453f044b15ea9f8e63f306898e32b; Path=/; HttpOnly; Secure; SameSite=None\nTS01dfd669=01d9c3d318c7d1cb0bebf53c78d5e2cd07886a7b11a76ff9a05ac14472dedf18431353a89662ae0b9455010cf4503c85157db36d672b9513dc51166213d651a68ae2bdd08d31f5962ba3c37b755afd0cf0640a64fb0b9c9d0b5d48d8152625567c42b16753; path=/pag_Home/avisoLegal.html; HttpOnly; Secure; SameSite=None",
            "strict-transport-security": "max-age=63072000; preload",
            "transfer-encoding": "chunked",
            "vary": "Accept-Encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1;mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add a Content-Security-Policy header",
            "urgency": "high",
            "detail": "Add an appropriate CSP to reduce script injection and resource loading risk."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 30,
        "urgency": "medium",
        "origin": "https://administracion.gob.es",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://administracion.gob.es/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/favicon.ico",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 2403496.2,
        "checks": {
          "hasEffectiveTextCompression": false
        },
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "estimatedSavingsBytes": 1313541,
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "estimatedSavingsBytes": 891965,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "estimatedSavingsBytes": 126680.2,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "estimatedSavingsBytes": 63759,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "estimatedSavingsBytes": 7551,
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings."
          }
        ],
        "recommendations": [
          {
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
          },
          {
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
          },
          {
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 7.37 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 4163423.2,
        "totalEstimatedBlockingMs": 9290,
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable text compression",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat.",
            "estimatedSavingsBytes": 1313541,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,283 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-text-compression"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 1202214,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,174 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 891965,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 871 KiB",
            "urgency": "high",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unused-javascript",
            "title": "Remove unused JavaScript",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code.",
            "estimatedSavingsBytes": 482292,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 471 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-javascript"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9290,
            "displayValue": "Est savings of 9,290 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 126680.2,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 124 KiB",
            "urgency": "medium",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "offscreen-images",
            "title": "Lazy-load offscreen images",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed.",
            "estimatedSavingsBytes": 75421,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 74 KiB",
            "urgency": "medium",
            "sourceAuditId": "offscreen-images"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 63759,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 62 KiB",
            "urgency": "medium",
            "sourceAuditId": "unminified-javascript"
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss.",
            "estimatedSavingsBytes": 7551,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-optimized-images"
          }
        ],
        "recommendations": [
          {
            "title": "Enable text compression",
            "urgency": "high",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat. Estimated byte savings: 1.25 MB."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "high",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 1.15 MB."
          },
          {
            "title": "Minify CSS",
            "urgency": "high",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 871.06 KB."
          },
          {
            "title": "Remove unused JavaScript",
            "urgency": "high",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code. Estimated byte savings: 470.99 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 9290 ms."
          },
          {
            "title": "Serve images in next-gen formats",
            "urgency": "medium",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 123.71 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1867352
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.78 MB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.78 MB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 31,
        "urgency": "high",
        "transferBytes": 2025527,
        "css": {
          "unusedBytes": 1202214,
          "ratio": 0.5935314611950372,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 482292,
          "duplicatedBytes": 0,
          "ratio": 0.23810692229725894,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "high",
            "estimatedSavingsBytes": 1202214,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          },
          {
            "area": "javascript",
            "title": "Remove unused JavaScript and feature bundles",
            "urgency": "high",
            "estimatedSavingsBytes": 482292,
            "strategy": "Drop unused packages and feature code, or move them behind route-level or interaction-triggered imports.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 35,
        "urgency": "high",
        "transferBytes": 2025527,
        "estimatedDeferrableBytes": 1759927,
        "renderBlockingMs": 9290,
        "breakdown": {
          "offscreenImageSavings": 75421,
          "unusedJavascriptSavings": 482292,
          "unusedCssSavings": 1202214
        },
        "candidates": [
          {
            "title": "Lazy-load offscreen images",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 75421,
            "strategy": "Load below-the-fold images only when they approach the viewport.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Defer non-critical JavaScript",
            "area": "javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 482292,
            "strategy": "Split bundles and load feature code on interaction or route transition.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1202214,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9290,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy stylesheet from administracion.gob.es",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from administracion.gob.es",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 254418,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from administracion.gob.es",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 159817,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.googletagmanager.com",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 145384,
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 17,
        "urgency": "low",
        "providerCount": 1,
        "requestCount": 1,
        "transferBytes": 145384,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 145384,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "low",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          }
        ]
      },
      "redundancy": {
        "score": 71,
        "urgency": "high",
        "transferBytes": 2025527,
        "estimatedRedundantBytes": 1684506,
        "redundancyRatio": 0.8316383834922961,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 1202214,
            "displayValue": "Est savings of 1,174 KiB"
          },
          {
            "auditId": "unused-javascript",
            "title": "Reduce unused JavaScript",
            "savingsBytes": 482292,
            "displayValue": "Est savings of 471 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "high",
            "estimatedSavingsBytes": 1202214,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce unused javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 482292,
            "auditId": "unused-javascript",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Enable and verify text compression",
            "urgency": "medium",
            "estimatedSavingsBytes": 1313541,
            "auditId": "uses-text-compression",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 46,
        "urgency": "high",
        "totalTransferBytes": 2025527,
        "heavyRequestCount": 5,
        "heavyBytes": 1780596,
        "heavyRatio": 0.8790778893591643,
        "heavyRequests": [
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "transferSize": 1177193,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "transferSize": 254418,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "transferSize": 159817,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "transferSize": 145384,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/libs/jquery.mCustomScrollbar.css",
            "transferSize": 43784,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 1220977
          },
          {
            "resourceType": "script",
            "count": 2,
            "transferBytes": 399802
          },
          {
            "resourceType": "image",
            "count": 1,
            "transferBytes": 159817
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "administracion.gob.es",
            "count": 4,
            "transferBytes": 1635212
          },
          {
            "domain": "www.googletagmanager.com",
            "count": 1,
            "transferBytes": 145384
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Lazy-load offscreen images and media galleries",
            "urgency": "medium",
            "estimatedSavingsBytes": 75421,
            "strategy": "Load imagery only when it enters the viewport or when a user opens the relevant section.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Split JavaScript by route or interaction",
            "urgency": "high",
            "estimatedSavingsBytes": 482292,
            "strategy": "Move non-critical bundles behind route-level or event-driven imports so they are only fetched on demand.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy stylesheet asset from administracion.gob.es",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "strategy": "Split this stylesheet so component-specific CSS is delivered only when the component is rendered.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 254418,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 159817,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0,
          "displayValue": "11.8 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 11.8 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": 0.06,
          "displayValue": "10.9 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- Current value: 10.9 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": 0,
          "displayValue": "Est savings of 471 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- Current value: Est savings of 471 KiB\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 1,174 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 1,174 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 9,290 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 9,290 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": 0,
          "displayValue": "Est savings of 1,283 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- Current value: Est savings of 1,283 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 124 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 124 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 7 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- Current value: Est savings of 7 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 74 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- Current value: Est savings of 74 KiB\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://administracion.gob.es/pag_Home/ca/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/residencia/obtencion-residencia/registrar-familiares",
      "status": "ok",
      "finalUrl": "https://administracion.gob.es/pag_Home/ca/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/residencia/obtencion-residencia/registrar-familiares",
      "performanceScore": 0.56,
      "bestPracticesScore": 0.79,
      "transferBytes": 2187573,
      "co2Grams": 0.8380185274422,
      "greenWeb": {
        "page": {
          "hostname": "administracion.gob.es",
          "checked": true,
          "status": "not-green",
          "green": false,
          "hostedBy": null,
          "hostedByWebsite": null,
          "listedProvider": null,
          "partner": null,
          "modified": "2026-03-29T13:38:28.588564",
          "supportingDocuments": [],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/administracion.gob.es",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290073,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "not-green",
          "externalOriginCount": 1,
          "greenCount": 1,
          "notGreenCount": 1,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 70,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/buscador/buscadorsimple.htm|input|text|q|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "q",
            "formContext": "form|get|/buscador/buscadorsimple.htm",
            "hasLabel": false,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 70,
              "urgency": "high",
              "issues": [
                "Missing associated label",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add a programmatic label using <label>, aria-label, or aria-labelledby.",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "Missing associated label",
            "urgency": "high",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 25,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": true,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": false,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Registrar a familiares ciudadanos de la UE - Obtención de la residencia - Residencia - Ciudadanos - Tus derechos y obligaciones en la UE - Tu espacio europeo - Punto de Acceso General",
          "lang": "ca",
          "charset": "",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Registro de familiares ciudadanos de la UE: solicitud, plazo y documentación a aportar",
          "robots": "all",
          "canonical": "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/residencia/obtencion-residencia/registrar-familiares",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 31,
          "tabletSmallTapTargets": 60,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 399,
            "viewportHeight": 864,
            "contentWidth": 399,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 31,
            "oversizedMedia": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 829,
            "viewportHeight": 1193,
            "contentWidth": 829,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 60,
            "oversizedMedia": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 31 small targets on mobile and 60 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 31,
        "urgency": "medium",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": false,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "connection": "Keep-Alive",
            "content-encoding": "gzip",
            "content-length": "12497",
            "content-type": "text/html;charset=UTF-8",
            "date": "Mon, 30 Mar 2026 00:46:02 GMT",
            "keep-alive": "timeout=15, max=500",
            "referrer-policy": "origin-when-cross-origin,strict-origin-when-cross-origin",
            "server": "Microsoft-IIS/5.0",
            "set-cookie": "VISITOR=returning; Path=/pag_Home/ca/Tu-espacio-europeo/derechos-obligaciones/ciudadanos; HttpOnly; Secure; SameSite=None\nTS01a8e1d0=01d9c3d318e789ba678d5f510903cba2d9619d84e41bf1c929f6e26ea46b7f1e54ca58bc9b6bd16f994b3bb7e0caef0d22a250a0b899a9ab291180f115e665a2bf2fcf1bc0e29453f044b15ea9f8e63f306898e32b; Path=/; HttpOnly; Secure; SameSite=None\nTS01e460c5=01d9c3d31875eb4ee065abf109a5ef141663ea9e5662999d88da62791f603954b0657e3ad206abe0e840a1f31af532847905d0382b90b7a84781f287b0f8ea376c270e95758790e5f992ab8a462f1118463bf9b8565956db104bfe20987b3f54c98e7c3998; path=/pag_Home/ca/Tu-espacio-europeo/derechos-obligaciones/ciudadanos; HttpOnly; Secure; SameSite=None",
            "strict-transport-security": "max-age=63072000; preload",
            "vary": "Accept-Encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1;mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add a Content-Security-Policy header",
            "urgency": "high",
            "detail": "Add an appropriate CSP to reduce script injection and resource loading risk."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 30,
        "urgency": "medium",
        "origin": "https://administracion.gob.es",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://administracion.gob.es/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/favicon.ico",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 2403496.2,
        "checks": {
          "hasEffectiveTextCompression": false
        },
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "estimatedSavingsBytes": 1313541,
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "estimatedSavingsBytes": 891965,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "estimatedSavingsBytes": 126680.2,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "estimatedSavingsBytes": 63759,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "estimatedSavingsBytes": 7551,
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings."
          }
        ],
        "recommendations": [
          {
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
          },
          {
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
          },
          {
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 7.37 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 4245652.2,
        "totalEstimatedBlockingMs": 8986,
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable text compression",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat.",
            "estimatedSavingsBytes": 1313541,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,283 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-text-compression"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 1197954,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,170 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 891965,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 871 KiB",
            "urgency": "high",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unused-javascript",
            "title": "Remove unused JavaScript",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code.",
            "estimatedSavingsBytes": 546375,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 534 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-javascript"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 8986,
            "displayValue": "Est savings of 8,990 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 126680.2,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 124 KiB",
            "urgency": "medium",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "offscreen-images",
            "title": "Lazy-load offscreen images",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed.",
            "estimatedSavingsBytes": 91115,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 89 KiB",
            "urgency": "medium",
            "sourceAuditId": "offscreen-images"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 63759,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 62 KiB",
            "urgency": "medium",
            "sourceAuditId": "unminified-javascript"
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss.",
            "estimatedSavingsBytes": 7551,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-optimized-images"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 6712,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-responsive-images"
          }
        ],
        "recommendations": [
          {
            "title": "Enable text compression",
            "urgency": "high",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat. Estimated byte savings: 1.25 MB."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "high",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 1.14 MB."
          },
          {
            "title": "Minify CSS",
            "urgency": "high",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 871.06 KB."
          },
          {
            "title": "Remove unused JavaScript",
            "urgency": "high",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code. Estimated byte savings: 533.57 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 8986 ms."
          },
          {
            "title": "Serve images in next-gen formats",
            "urgency": "medium",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 123.71 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1882022
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.79 MB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.79 MB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 30,
        "urgency": "high",
        "transferBytes": 2187573,
        "css": {
          "unusedBytes": 1197954,
          "ratio": 0.5476178394960991,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 546375,
          "duplicatedBytes": 0,
          "ratio": 0.24976309362019006,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "high",
            "estimatedSavingsBytes": 1197954,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          },
          {
            "area": "javascript",
            "title": "Remove unused JavaScript and feature bundles",
            "urgency": "high",
            "estimatedSavingsBytes": 546375,
            "strategy": "Drop unused packages and feature code, or move them behind route-level or interaction-triggered imports.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 35,
        "urgency": "high",
        "transferBytes": 2187573,
        "estimatedDeferrableBytes": 1835444,
        "renderBlockingMs": 8986,
        "breakdown": {
          "offscreenImageSavings": 91115,
          "unusedJavascriptSavings": 546375,
          "unusedCssSavings": 1197954
        },
        "candidates": [
          {
            "title": "Lazy-load offscreen images",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 91115,
            "strategy": "Load below-the-fold images only when they approach the viewport.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Defer non-critical JavaScript",
            "area": "javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 546375,
            "strategy": "Split bundles and load feature code on interaction or route transition.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1197954,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 8986,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy stylesheet from administracion.gob.es",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from administracion.gob.es",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 254418,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from administracion.gob.es",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.googletagmanager.com",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 145384,
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 34,
        "urgency": "medium",
        "providerCount": 1,
        "requestCount": 2,
        "transferBytes": 290073,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290073,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "medium",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "medium",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          }
        ]
      },
      "redundancy": {
        "score": 66,
        "urgency": "high",
        "transferBytes": 2187573,
        "estimatedRedundantBytes": 1744329,
        "redundancyRatio": 0.7973809331162891,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 1197954,
            "displayValue": "Est savings of 1,170 KiB"
          },
          {
            "auditId": "unused-javascript",
            "title": "Reduce unused JavaScript",
            "savingsBytes": 546375,
            "displayValue": "Est savings of 534 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "high",
            "estimatedSavingsBytes": 1197954,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce unused javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 546375,
            "auditId": "unused-javascript",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Enable and verify text compression",
            "urgency": "medium",
            "estimatedSavingsBytes": 1313541,
            "auditId": "uses-text-compression",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 47,
        "urgency": "high",
        "totalTransferBytes": 2187573,
        "heavyRequestCount": 6,
        "heavyBytes": 1925291,
        "heavyRatio": 0.8801036582550616,
        "heavyRequests": [
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "transferSize": 1177193,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "transferSize": 254418,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "transferSize": 159823,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "transferSize": 145384,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-4YNNM3J1E0&cx=c&gtm=4e63p1",
            "transferSize": 144689,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/libs/jquery.mCustomScrollbar.css",
            "transferSize": 43784,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 1220977
          },
          {
            "resourceType": "script",
            "count": 3,
            "transferBytes": 544491
          },
          {
            "resourceType": "image",
            "count": 1,
            "transferBytes": 159823
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "administracion.gob.es",
            "count": 4,
            "transferBytes": 1635218
          },
          {
            "domain": "www.googletagmanager.com",
            "count": 2,
            "transferBytes": 290073
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Lazy-load offscreen images and media galleries",
            "urgency": "medium",
            "estimatedSavingsBytes": 91115,
            "strategy": "Load imagery only when it enters the viewport or when a user opens the relevant section.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Split JavaScript by route or interaction",
            "urgency": "high",
            "estimatedSavingsBytes": 546375,
            "strategy": "Move non-critical bundles behind route-level or event-driven imports so they are only fetched on demand.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy stylesheet asset from administracion.gob.es",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "strategy": "Split this stylesheet so component-specific CSS is delivered only when the component is rendered.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 254418,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0,
          "displayValue": "11.3 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 11.3 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": 0.07,
          "displayValue": "10.6 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- Current value: 10.6 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": 0,
          "displayValue": "Est savings of 534 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- Current value: Est savings of 534 KiB\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 1,170 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 1,170 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 8,990 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 8,990 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": 0,
          "displayValue": "Est savings of 1,283 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- Current value: Est savings of 1,283 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 124 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 124 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 7 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- Current value: Est savings of 7 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 89 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- Current value: Est savings of 89 KiB\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://administracion.gob.es/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/trabajo-jubilacion/condiciones-trabajo/contratos-salario",
      "status": "ok",
      "finalUrl": "https://administracion.gob.es/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/trabajo-jubilacion/condiciones-trabajo/contratos-salario",
      "performanceScore": 0.55,
      "bestPracticesScore": 0.79,
      "transferBytes": 2202632,
      "co2Grams": 0.8437873502448,
      "greenWeb": {
        "page": {
          "hostname": "administracion.gob.es",
          "checked": true,
          "status": "not-green",
          "green": false,
          "hostedBy": null,
          "hostedByWebsite": null,
          "listedProvider": null,
          "partner": null,
          "modified": "2026-03-29T13:38:28.588564",
          "supportingDocuments": [],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/administracion.gob.es",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290073,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "not-green",
          "externalOriginCount": 1,
          "greenCount": 1,
          "notGreenCount": 1,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 70,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/buscador/buscadorsimple.htm|input|text|q|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "q",
            "formContext": "form|get|/buscador/buscadorsimple.htm",
            "hasLabel": false,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 70,
              "urgency": "high",
              "issues": [
                "Missing associated label",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add a programmatic label using <label>, aria-label, or aria-labelledby.",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "Missing associated label",
            "urgency": "high",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 35,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": false,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Contracts. Salary. Self-employment - Conditions of employment, including for posted workers - Work and retirement - Citizens - Your rights and obligations in the EU - Tu espacio europeo - Punto de Acceso General",
          "lang": "en",
          "charset": "",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Information about types of employment contracts, content of the contract, salary and about being self-employed",
          "robots": "all",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 59,
          "tabletSmallTapTargets": 91,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 399,
            "viewportHeight": 864,
            "contentWidth": 399,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 59,
            "oversizedMedia": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 829,
            "viewportHeight": 1193,
            "contentWidth": 829,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 91,
            "oversizedMedia": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 59 small targets on mobile and 91 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 33,
        "urgency": "medium",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": false,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 2,
          "externalScriptsWithoutIntegrity": 2,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "connection": "Keep-Alive",
            "content-encoding": "gzip",
            "content-type": "text/html;charset=UTF-8",
            "date": "Mon, 30 Mar 2026 00:46:29 GMT",
            "keep-alive": "timeout=15, max=500",
            "referrer-policy": "origin-when-cross-origin,strict-origin-when-cross-origin",
            "server": "Microsoft-IIS/5.0",
            "set-cookie": "VISITOR=returning; Path=/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/ciudadanos; HttpOnly; Secure; SameSite=None\nTS01a8e1d0=01d9c3d318e789ba678d5f510903cba2d9619d84e41bf1c929f6e26ea46b7f1e54ca58bc9b6bd16f994b3bb7e0caef0d22a250a0b899a9ab291180f115e665a2bf2fcf1bc0e29453f044b15ea9f8e63f306898e32b; Path=/; HttpOnly; Secure; SameSite=None\nTS01cc21ed=01d9c3d31875eb4ee065abf109a5ef141663ea9e5662999d88da62791f603954b0657e3ad206abe0e840a1f31af532847905d0382b90b7a84781f287b0f8ea376c270e95758790e5f992ab8a462f1118463bf9b8565956db104bfe20987b3f54c98e7c3998; path=/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/ciudadanos; HttpOnly; Secure; SameSite=None",
            "strict-transport-security": "max-age=63072000; preload",
            "transfer-encoding": "chunked",
            "vary": "Accept-Encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1;mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add a Content-Security-Policy header",
            "urgency": "high",
            "detail": "Add an appropriate CSP to reduce script injection and resource loading risk."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "2 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 30,
        "urgency": "medium",
        "origin": "https://administracion.gob.es",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://administracion.gob.es/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/favicon.ico",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 2403496.2,
        "checks": {
          "hasEffectiveTextCompression": false
        },
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "estimatedSavingsBytes": 1313541,
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "estimatedSavingsBytes": 891965,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "estimatedSavingsBytes": 126680.2,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "estimatedSavingsBytes": 63759,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "estimatedSavingsBytes": 7551,
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings."
          }
        ],
        "recommendations": [
          {
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
          },
          {
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
          },
          {
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 7.37 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 4232006.2,
        "totalEstimatedBlockingMs": 9221,
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable text compression",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat.",
            "estimatedSavingsBytes": 1313541,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,283 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-text-compression"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 1194913,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,167 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 891965,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 871 KiB",
            "urgency": "high",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unused-javascript",
            "title": "Remove unused JavaScript",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code.",
            "estimatedSavingsBytes": 532367,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 520 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-javascript"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9221,
            "displayValue": "Est savings of 9,220 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 126680.2,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 124 KiB",
            "urgency": "medium",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "offscreen-images",
            "title": "Lazy-load offscreen images",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed.",
            "estimatedSavingsBytes": 94518,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 92 KiB",
            "urgency": "medium",
            "sourceAuditId": "offscreen-images"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 63759,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 62 KiB",
            "urgency": "medium",
            "sourceAuditId": "unminified-javascript"
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss.",
            "estimatedSavingsBytes": 7551,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-optimized-images"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 6712,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-responsive-images"
          }
        ],
        "recommendations": [
          {
            "title": "Enable text compression",
            "urgency": "high",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat. Estimated byte savings: 1.25 MB."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "high",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 1.14 MB."
          },
          {
            "title": "Minify CSS",
            "urgency": "high",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 871.06 KB."
          },
          {
            "title": "Remove unused JavaScript",
            "urgency": "high",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code. Estimated byte savings: 519.89 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 9221 ms."
          },
          {
            "title": "Serve images in next-gen formats",
            "urgency": "medium",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 123.71 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 4,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 2,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "2 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1892359
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.80 MB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.80 MB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 30,
        "urgency": "high",
        "transferBytes": 2202632,
        "css": {
          "unusedBytes": 1194913,
          "ratio": 0.5424932535257819,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 532367,
          "duplicatedBytes": 0,
          "ratio": 0.24169584388132018,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "high",
            "estimatedSavingsBytes": 1194913,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          },
          {
            "area": "javascript",
            "title": "Remove unused JavaScript and feature bundles",
            "urgency": "high",
            "estimatedSavingsBytes": 532367,
            "strategy": "Drop unused packages and feature code, or move them behind route-level or interaction-triggered imports.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 35,
        "urgency": "high",
        "transferBytes": 2202632,
        "estimatedDeferrableBytes": 1821798,
        "renderBlockingMs": 9221,
        "breakdown": {
          "offscreenImageSavings": 94518,
          "unusedJavascriptSavings": 532367,
          "unusedCssSavings": 1194913
        },
        "candidates": [
          {
            "title": "Lazy-load offscreen images",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 94518,
            "strategy": "Load below-the-fold images only when they approach the viewport.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Defer non-critical JavaScript",
            "area": "javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 532367,
            "strategy": "Split bundles and load feature code on interaction or route transition.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1194913,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9221,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy stylesheet from administracion.gob.es",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from administracion.gob.es",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 254418,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from administracion.gob.es",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 159817,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.googletagmanager.com",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 145384,
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 34,
        "urgency": "medium",
        "providerCount": 1,
        "requestCount": 2,
        "transferBytes": 290073,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290073,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "medium",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "medium",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          }
        ]
      },
      "redundancy": {
        "score": 68,
        "urgency": "high",
        "transferBytes": 2202632,
        "estimatedRedundantBytes": 1727280,
        "redundancyRatio": 0.7841890974071021,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 1194913,
            "displayValue": "Est savings of 1,167 KiB"
          },
          {
            "auditId": "unused-javascript",
            "title": "Reduce unused JavaScript",
            "savingsBytes": 532367,
            "displayValue": "Est savings of 520 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "high",
            "estimatedSavingsBytes": 1194913,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce unused javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 532367,
            "auditId": "unused-javascript",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Enable and verify text compression",
            "urgency": "medium",
            "estimatedSavingsBytes": 1313541,
            "auditId": "uses-text-compression",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 47,
        "urgency": "high",
        "totalTransferBytes": 2202632,
        "heavyRequestCount": 6,
        "heavyBytes": 1925285,
        "heavyRatio": 0.874083823353152,
        "heavyRequests": [
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "transferSize": 1177193,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "transferSize": 254418,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "transferSize": 159817,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "transferSize": 145384,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-4YNNM3J1E0&cx=c&gtm=4e63p1",
            "transferSize": 144689,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/libs/jquery.mCustomScrollbar.css",
            "transferSize": 43784,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 1220977
          },
          {
            "resourceType": "script",
            "count": 3,
            "transferBytes": 544491
          },
          {
            "resourceType": "image",
            "count": 1,
            "transferBytes": 159817
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "administracion.gob.es",
            "count": 4,
            "transferBytes": 1635212
          },
          {
            "domain": "www.googletagmanager.com",
            "count": 2,
            "transferBytes": 290073
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Lazy-load offscreen images and media galleries",
            "urgency": "medium",
            "estimatedSavingsBytes": 94518,
            "strategy": "Load imagery only when it enters the viewport or when a user opens the relevant section.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Split JavaScript by route or interaction",
            "urgency": "high",
            "estimatedSavingsBytes": 532367,
            "strategy": "Move non-critical bundles behind route-level or event-driven imports so they are only fetched on demand.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy stylesheet asset from administracion.gob.es",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "strategy": "Split this stylesheet so component-specific CSS is delivered only when the component is rendered.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 254418,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 159817,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0,
          "displayValue": "12.6 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 12.6 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": 0,
          "displayValue": "16.3 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- Current value: 16.3 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": 0,
          "displayValue": "Est savings of 520 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- Current value: Est savings of 520 KiB\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 1,167 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 1,167 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 9,220 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 9,220 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": 0,
          "displayValue": "Est savings of 1,283 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- Current value: Est savings of 1,283 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 124 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 124 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 7 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- Current value: Est savings of 7 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 92 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- Current value: Est savings of 92 KiB\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://administracion.gob.es/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/empresas/inicio-gestion-cierre/insolvencia-liquidacion/masa-activa-pasiva-fin",
      "status": "ok",
      "finalUrl": "https://administracion.gob.es/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/empresas/inicio-gestion-cierre/insolvencia-liquidacion/masa-activa-pasiva-fin",
      "performanceScore": 0.56,
      "bestPracticesScore": 0.79,
      "transferBytes": 2190009,
      "co2Grams": 0.8389517137326001,
      "greenWeb": {
        "page": {
          "hostname": "administracion.gob.es",
          "checked": true,
          "status": "not-green",
          "green": false,
          "hostedBy": null,
          "hostedByWebsite": null,
          "listedProvider": null,
          "partner": null,
          "modified": "2026-03-29T13:38:28.588564",
          "supportingDocuments": [],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/administracion.gob.es",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290073,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "not-green",
          "externalOriginCount": 1,
          "greenCount": 1,
          "notGreenCount": 1,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 70,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/buscador/buscadorsimple.htm|input|text|q|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "q",
            "formContext": "form|get|/buscador/buscadorsimple.htm",
            "hasLabel": false,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 70,
              "urgency": "high",
              "issues": [
                "Missing associated label",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add a programmatic label using <label>, aria-label, or aria-labelledby.",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "Missing associated label",
            "urgency": "high",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 35,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": false,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Establishing the assets and liabilities of the bankrupt’s estate and the end of the bankruptcy - Insolvency and liquidation of companies - Starting, running and closing a business - Business - Your rights and obligations in the EU - Tu espacio europeo - Punto de Acceso General",
          "lang": "en",
          "charset": "",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Information on how the assets and liabilities of a bankrupt's estate are established, what happens after the stage of shared supervision and how the debt restructuring plan concludes",
          "robots": "all",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 32,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 33,
          "tabletSmallTapTargets": 61,
          "fixedWidthOffenders": 1,
          "oversizedMedia": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 399,
            "viewportHeight": 864,
            "contentWidth": 399,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 1,
            "smallTapTargets": 33,
            "oversizedMedia": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 829,
            "viewportHeight": 1193,
            "contentWidth": 829,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 61,
            "oversizedMedia": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 33 small targets on mobile and 61 on tablet."
          },
          {
            "title": "Refactor fixed-width components",
            "urgency": "medium",
            "detail": "1 element(s) exceeded viewport width in tested layouts; use responsive component constraints."
          }
        ]
      },
      "securityLight": {
        "score": 31,
        "urgency": "medium",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": false,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "connection": "Keep-Alive",
            "content-encoding": "gzip",
            "content-length": "14380",
            "content-type": "text/html;charset=UTF-8",
            "date": "Mon, 30 Mar 2026 00:46:50 GMT",
            "keep-alive": "timeout=15, max=500",
            "referrer-policy": "origin-when-cross-origin,strict-origin-when-cross-origin",
            "server": "Microsoft-IIS/5.0",
            "set-cookie": "VISITOR=returning; Path=/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/empresas; HttpOnly; Secure; SameSite=None\nTS01a8e1d0=01d9c3d318e789ba678d5f510903cba2d9619d84e41bf1c929f6e26ea46b7f1e54ca58bc9b6bd16f994b3bb7e0caef0d22a250a0b899a9ab291180f115e665a2bf2fcf1bc0e29453f044b15ea9f8e63f306898e32b; Path=/; HttpOnly; Secure; SameSite=None\nTS01e4c404=01d9c3d3183d0ab5e35f0a4d3b0e06f02e6973180380529b1b9ba56384d07a19b66567890ae44783a444bdd5d48d6a967bacc4b9ad4bff902aea9909935fb9326af3d6d004f98a4d48eaff3a52021502918d296d1fe81761193e34385adc30c5a064c0078b; path=/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/empresas; HttpOnly; Secure; SameSite=None",
            "strict-transport-security": "max-age=63072000; preload",
            "vary": "Accept-Encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1;mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add a Content-Security-Policy header",
            "urgency": "high",
            "detail": "Add an appropriate CSP to reduce script injection and resource loading risk."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 30,
        "urgency": "medium",
        "origin": "https://administracion.gob.es",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://administracion.gob.es/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/favicon.ico",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 2403496.2,
        "checks": {
          "hasEffectiveTextCompression": false
        },
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "estimatedSavingsBytes": 1313541,
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "estimatedSavingsBytes": 891965,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "estimatedSavingsBytes": 126680.2,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "estimatedSavingsBytes": 63759,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "estimatedSavingsBytes": 7551,
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings."
          }
        ],
        "recommendations": [
          {
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
          },
          {
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
          },
          {
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 7.37 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 4245361.2,
        "totalEstimatedBlockingMs": 9241,
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable text compression",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat.",
            "estimatedSavingsBytes": 1313541,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,283 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-text-compression"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 1197587,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,170 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 891965,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 871 KiB",
            "urgency": "high",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unused-javascript",
            "title": "Remove unused JavaScript",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code.",
            "estimatedSavingsBytes": 546451,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 534 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-javascript"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9241,
            "displayValue": "Est savings of 9,240 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 126680.2,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 124 KiB",
            "urgency": "medium",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "offscreen-images",
            "title": "Lazy-load offscreen images",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed.",
            "estimatedSavingsBytes": 91115,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 89 KiB",
            "urgency": "medium",
            "sourceAuditId": "offscreen-images"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 63759,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 62 KiB",
            "urgency": "medium",
            "sourceAuditId": "unminified-javascript"
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss.",
            "estimatedSavingsBytes": 7551,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-optimized-images"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 6712,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-responsive-images"
          }
        ],
        "recommendations": [
          {
            "title": "Enable text compression",
            "urgency": "high",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat. Estimated byte savings: 1.25 MB."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "high",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 1.14 MB."
          },
          {
            "title": "Minify CSS",
            "urgency": "high",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 871.06 KB."
          },
          {
            "title": "Remove unused JavaScript",
            "urgency": "high",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code. Estimated byte savings: 533.64 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 9241 ms."
          },
          {
            "title": "Serve images in next-gen formats",
            "urgency": "medium",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 123.71 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1882577
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.80 MB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.80 MB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 30,
        "urgency": "high",
        "transferBytes": 2190009,
        "css": {
          "unusedBytes": 1197587,
          "ratio": 0.5468411317031118,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 546451,
          "duplicatedBytes": 0,
          "ratio": 0.24951997914163823,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "high",
            "estimatedSavingsBytes": 1197587,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          },
          {
            "area": "javascript",
            "title": "Remove unused JavaScript and feature bundles",
            "urgency": "high",
            "estimatedSavingsBytes": 546451,
            "strategy": "Drop unused packages and feature code, or move them behind route-level or interaction-triggered imports.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 35,
        "urgency": "high",
        "transferBytes": 2190009,
        "estimatedDeferrableBytes": 1835153,
        "renderBlockingMs": 9241,
        "breakdown": {
          "offscreenImageSavings": 91115,
          "unusedJavascriptSavings": 546451,
          "unusedCssSavings": 1197587
        },
        "candidates": [
          {
            "title": "Lazy-load offscreen images",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 91115,
            "strategy": "Load below-the-fold images only when they approach the viewport.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Defer non-critical JavaScript",
            "area": "javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 546451,
            "strategy": "Split bundles and load feature code on interaction or route transition.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1197587,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9241,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy stylesheet from administracion.gob.es",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from administracion.gob.es",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 254411,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from administracion.gob.es",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.googletagmanager.com",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 145384,
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 34,
        "urgency": "medium",
        "providerCount": 1,
        "requestCount": 2,
        "transferBytes": 290073,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290073,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "medium",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "medium",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          }
        ]
      },
      "redundancy": {
        "score": 66,
        "urgency": "high",
        "transferBytes": 2190009,
        "estimatedRedundantBytes": 1744038,
        "redundancyRatio": 0.7963611108447499,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 1197587,
            "displayValue": "Est savings of 1,170 KiB"
          },
          {
            "auditId": "unused-javascript",
            "title": "Reduce unused JavaScript",
            "savingsBytes": 546451,
            "displayValue": "Est savings of 534 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "high",
            "estimatedSavingsBytes": 1197587,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce unused javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 546451,
            "auditId": "unused-javascript",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Enable and verify text compression",
            "urgency": "medium",
            "estimatedSavingsBytes": 1313541,
            "auditId": "uses-text-compression",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 47,
        "urgency": "high",
        "totalTransferBytes": 2190009,
        "heavyRequestCount": 6,
        "heavyBytes": 1925284,
        "heavyRatio": 0.8791215013271635,
        "heavyRequests": [
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "transferSize": 1177193,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "transferSize": 254411,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "transferSize": 159823,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "transferSize": 145384,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-4YNNM3J1E0&cx=c&gtm=4e63p1",
            "transferSize": 144689,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/libs/jquery.mCustomScrollbar.css",
            "transferSize": 43784,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 1220977
          },
          {
            "resourceType": "script",
            "count": 3,
            "transferBytes": 544484
          },
          {
            "resourceType": "image",
            "count": 1,
            "transferBytes": 159823
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "administracion.gob.es",
            "count": 4,
            "transferBytes": 1635211
          },
          {
            "domain": "www.googletagmanager.com",
            "count": 2,
            "transferBytes": 290073
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Lazy-load offscreen images and media galleries",
            "urgency": "medium",
            "estimatedSavingsBytes": 91115,
            "strategy": "Load imagery only when it enters the viewport or when a user opens the relevant section.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Split JavaScript by route or interaction",
            "urgency": "high",
            "estimatedSavingsBytes": 546451,
            "strategy": "Move non-critical bundles behind route-level or event-driven imports so they are only fetched on demand.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy stylesheet asset from administracion.gob.es",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "strategy": "Split this stylesheet so component-specific CSS is delivered only when the component is rendered.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 254411,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0,
          "displayValue": "12.0 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 12.0 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": 0.06,
          "displayValue": "10.8 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- Current value: 10.8 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": 0,
          "displayValue": "Est savings of 534 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- Current value: Est savings of 534 KiB\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 1,170 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 1,170 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 9,240 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 9,240 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": 0,
          "displayValue": "Est savings of 1,283 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- Current value: Est savings of 1,283 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 124 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 124 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 7 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- Current value: Est savings of 7 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 89 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- Current value: Est savings of 89 KiB\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://administracion.gob.es/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/empresas/contratacion-publica/participar-licitaciones/asistencia-informacion",
      "status": "ok",
      "finalUrl": "https://administracion.gob.es/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/empresas/contratacion-publica/participar-licitaciones/asistencia-informacion",
      "performanceScore": 0.56,
      "bestPracticesScore": 0.79,
      "transferBytes": 2224090,
      "co2Grams": 0.8520075109260001,
      "greenWeb": {
        "page": {
          "hostname": "administracion.gob.es",
          "checked": true,
          "status": "not-green",
          "green": false,
          "hostedBy": null,
          "hostedByWebsite": null,
          "listedProvider": null,
          "partner": null,
          "modified": "2026-03-29T13:38:28.588564",
          "supportingDocuments": [],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/administracion.gob.es",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290073,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "not-green",
          "externalOriginCount": 1,
          "greenCount": 1,
          "notGreenCount": 1,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 70,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/buscador/buscadorsimple.htm|input|text|q|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "q",
            "formContext": "form|get|/buscador/buscadorsimple.htm",
            "hasLabel": false,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 70,
              "urgency": "high",
              "issues": [
                "Missing associated label",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add a programmatic label using <label>, aria-label, or aria-labelledby.",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "Missing associated label",
            "urgency": "high",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 35,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": false,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Assistance and information - Public contracts: Participating in public tenders - Public contracts - Business - Your rights and obligations in the EU - Tu espacio europeo - Punto de Acceso General",
          "lang": "en",
          "charset": "",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Information about the guide to public procurement and competition and public procurement planning.",
          "robots": "all",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 34,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 44,
          "tabletSmallTapTargets": 68,
          "fixedWidthOffenders": 2,
          "oversizedMedia": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 399,
            "viewportHeight": 864,
            "contentWidth": 399,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 2,
            "smallTapTargets": 44,
            "oversizedMedia": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 829,
            "viewportHeight": 1193,
            "contentWidth": 829,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 68,
            "oversizedMedia": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 44 small targets on mobile and 68 on tablet."
          },
          {
            "title": "Refactor fixed-width components",
            "urgency": "medium",
            "detail": "2 element(s) exceeded viewport width in tested layouts; use responsive component constraints."
          }
        ]
      },
      "securityLight": {
        "score": 31,
        "urgency": "medium",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": false,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "connection": "Keep-Alive",
            "content-encoding": "gzip",
            "content-length": "15497",
            "content-type": "text/html;charset=UTF-8",
            "date": "Mon, 30 Mar 2026 00:47:10 GMT",
            "keep-alive": "timeout=15, max=500",
            "referrer-policy": "origin-when-cross-origin,strict-origin-when-cross-origin",
            "server": "Microsoft-IIS/5.0",
            "set-cookie": "VISITOR=returning; Path=/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/empresas; HttpOnly; Secure; SameSite=None\nTS01a8e1d0=01d9c3d318e789ba678d5f510903cba2d9619d84e41bf1c929f6e26ea46b7f1e54ca58bc9b6bd16f994b3bb7e0caef0d22a250a0b899a9ab291180f115e665a2bf2fcf1bc0e29453f044b15ea9f8e63f306898e32b; Path=/; HttpOnly; Secure; SameSite=None\nTS01e4c404=01d9c3d3183d0ab5e35f0a4d3b0e06f02e6973180380529b1b9ba56384d07a19b66567890ae44783a444bdd5d48d6a967bacc4b9ad4bff902aea9909935fb9326af3d6d004f98a4d48eaff3a52021502918d296d1fe81761193e34385adc30c5a064c0078b; path=/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/empresas; HttpOnly; Secure; SameSite=None",
            "strict-transport-security": "max-age=63072000; preload",
            "vary": "Accept-Encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1;mode=block",
            "traceresponse": "00-a374a34835117618a7c20e6b013ede63-3df3d1aa20f01928-01",
            "x-dt-tracestate": "acd5d8fe-344161ca@dt"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add a Content-Security-Policy header",
            "urgency": "high",
            "detail": "Add an appropriate CSP to reduce script injection and resource loading risk."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 30,
        "urgency": "medium",
        "origin": "https://administracion.gob.es",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://administracion.gob.es/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/favicon.ico",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 2403496.2,
        "checks": {
          "hasEffectiveTextCompression": false
        },
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "estimatedSavingsBytes": 1313541,
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "estimatedSavingsBytes": 891965,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "estimatedSavingsBytes": 126680.2,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "estimatedSavingsBytes": 63759,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "estimatedSavingsBytes": 7551,
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings."
          }
        ],
        "recommendations": [
          {
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
          },
          {
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
          },
          {
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 7.37 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 4253132.2,
        "totalEstimatedBlockingMs": 9213,
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable text compression",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat.",
            "estimatedSavingsBytes": 1313541,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,283 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-text-compression"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 1196219,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,168 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 891965,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 871 KiB",
            "urgency": "high",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unused-javascript",
            "title": "Remove unused JavaScript",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code.",
            "estimatedSavingsBytes": 545421,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 533 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-javascript"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9213,
            "displayValue": "Est savings of 9,210 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 126680.2,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 124 KiB",
            "urgency": "medium",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "offscreen-images",
            "title": "Lazy-load offscreen images",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed.",
            "estimatedSavingsBytes": 101284,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 99 KiB",
            "urgency": "medium",
            "sourceAuditId": "offscreen-images"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 63759,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 62 KiB",
            "urgency": "medium",
            "sourceAuditId": "unminified-javascript"
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss.",
            "estimatedSavingsBytes": 7551,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-optimized-images"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 6712,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-responsive-images"
          }
        ],
        "recommendations": [
          {
            "title": "Enable text compression",
            "urgency": "high",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat. Estimated byte savings: 1.25 MB."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "high",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 1.14 MB."
          },
          {
            "title": "Minify CSS",
            "urgency": "high",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 871.06 KB."
          },
          {
            "title": "Remove unused JavaScript",
            "urgency": "high",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code. Estimated byte savings: 532.64 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 9213 ms."
          },
          {
            "title": "Serve images in next-gen formats",
            "urgency": "medium",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 123.71 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1915674
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.83 MB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.83 MB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 30,
        "urgency": "high",
        "transferBytes": 2224090,
        "css": {
          "unusedBytes": 1196219,
          "ratio": 0.5378464900251338,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 545421,
          "duplicatedBytes": 0,
          "ratio": 0.24523333138497094,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "high",
            "estimatedSavingsBytes": 1196219,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          },
          {
            "area": "javascript",
            "title": "Remove unused JavaScript and feature bundles",
            "urgency": "high",
            "estimatedSavingsBytes": 545421,
            "strategy": "Drop unused packages and feature code, or move them behind route-level or interaction-triggered imports.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 35,
        "urgency": "high",
        "transferBytes": 2224090,
        "estimatedDeferrableBytes": 1842924,
        "renderBlockingMs": 9213,
        "breakdown": {
          "offscreenImageSavings": 101284,
          "unusedJavascriptSavings": 545421,
          "unusedCssSavings": 1196219
        },
        "candidates": [
          {
            "title": "Lazy-load offscreen images",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 101284,
            "strategy": "Load below-the-fold images only when they approach the viewport.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Defer non-critical JavaScript",
            "area": "javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 545421,
            "strategy": "Split bundles and load feature code on interaction or route transition.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1196219,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9213,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy stylesheet from administracion.gob.es",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from administracion.gob.es",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 254418,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from administracion.gob.es",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.googletagmanager.com",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 145384,
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 34,
        "urgency": "medium",
        "providerCount": 1,
        "requestCount": 2,
        "transferBytes": 290073,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290073,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "medium",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "medium",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          }
        ]
      },
      "redundancy": {
        "score": 68,
        "urgency": "high",
        "transferBytes": 2224090,
        "estimatedRedundantBytes": 1741640,
        "redundancyRatio": 0.7830798214101048,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 1196219,
            "displayValue": "Est savings of 1,168 KiB"
          },
          {
            "auditId": "unused-javascript",
            "title": "Reduce unused JavaScript",
            "savingsBytes": 545421,
            "displayValue": "Est savings of 533 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "high",
            "estimatedSavingsBytes": 1196219,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce unused javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 545421,
            "auditId": "unused-javascript",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Enable and verify text compression",
            "urgency": "medium",
            "estimatedSavingsBytes": 1313541,
            "auditId": "uses-text-compression",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 46,
        "urgency": "high",
        "totalTransferBytes": 2224090,
        "heavyRequestCount": 6,
        "heavyBytes": 1925291,
        "heavyRatio": 0.8656533683439069,
        "heavyRequests": [
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "transferSize": 1177193,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "transferSize": 254418,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "transferSize": 159823,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "transferSize": 145384,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-4YNNM3J1E0&cx=c&gtm=4e63p1",
            "transferSize": 144689,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/libs/jquery.mCustomScrollbar.css",
            "transferSize": 43784,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 1220977
          },
          {
            "resourceType": "script",
            "count": 3,
            "transferBytes": 544491
          },
          {
            "resourceType": "image",
            "count": 1,
            "transferBytes": 159823
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "administracion.gob.es",
            "count": 4,
            "transferBytes": 1635218
          },
          {
            "domain": "www.googletagmanager.com",
            "count": 2,
            "transferBytes": 290073
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Lazy-load offscreen images and media galleries",
            "urgency": "medium",
            "estimatedSavingsBytes": 101284,
            "strategy": "Load imagery only when it enters the viewport or when a user opens the relevant section.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Split JavaScript by route or interaction",
            "urgency": "high",
            "estimatedSavingsBytes": 545421,
            "strategy": "Move non-critical bundles behind route-level or event-driven imports so they are only fetched on demand.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy stylesheet asset from administracion.gob.es",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "strategy": "Split this stylesheet so component-specific CSS is delivered only when the component is rendered.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 254418,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0,
          "displayValue": "11.4 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 11.4 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": 0.06,
          "displayValue": "10.8 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- Current value: 10.8 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": 0,
          "displayValue": "Est savings of 533 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- Current value: Est savings of 533 KiB\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 1,168 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 1,168 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 9,210 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 9,210 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": 0,
          "displayValue": "Est savings of 1,283 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- Current value: Est savings of 1,283 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 124 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 124 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 7 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- Current value: Est savings of 7 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 99 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- Current value: Est savings of 99 KiB\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://administracion.gob.es/pag_Home/Tramites.html",
      "status": "ok",
      "finalUrl": "https://administracion.gob.es/pag_Home/Tramites.html",
      "performanceScore": 0.56,
      "bestPracticesScore": 0.79,
      "transferBytes": 2024413,
      "co2Grams": 0.7755149662182002,
      "greenWeb": {
        "page": {
          "hostname": "administracion.gob.es",
          "checked": true,
          "status": "not-green",
          "green": false,
          "hostedBy": null,
          "hostedByWebsite": null,
          "listedProvider": null,
          "partner": null,
          "modified": "2026-03-29T13:38:28.588564",
          "supportingDocuments": [],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/administracion.gob.es",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 145381,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "not-green",
          "externalOriginCount": 1,
          "greenCount": 1,
          "notGreenCount": 1,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 70,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/buscador/buscadorsimple.htm|input|text|q|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "q",
            "formContext": "form|get|/buscador/buscadorsimple.htm",
            "hasLabel": false,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 70,
              "urgency": "high",
              "issues": [
                "Missing associated label",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add a programmatic label using <label>, aria-label, or aria-labelledby.",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "Missing associated label",
            "urgency": "high",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 45,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": false,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": false,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Trámites y Servicios Electrónicos - Punto de Acceso General",
          "lang": "es",
          "charset": "",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "",
          "robots": "all",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Add meta description",
            "urgency": "medium",
            "detail": "Provide a concise description to improve machine interpretation and preview quality."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 17,
          "tabletSmallTapTargets": 49,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 399,
            "viewportHeight": 864,
            "contentWidth": 399,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 17,
            "oversizedMedia": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 829,
            "viewportHeight": 1193,
            "contentWidth": 829,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 49,
            "oversizedMedia": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "medium",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 17 small targets on mobile and 49 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 31,
        "urgency": "medium",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": false,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "connection": "Keep-Alive",
            "content-encoding": "gzip",
            "content-type": "text/html;charset=UTF-8",
            "date": "Mon, 30 Mar 2026 00:47:31 GMT",
            "keep-alive": "timeout=15, max=500",
            "referrer-policy": "origin-when-cross-origin,strict-origin-when-cross-origin",
            "server": "Microsoft-IIS/5.0",
            "set-cookie": "VISITOR=returning; Path=/pag_Home/Tramites.html; HttpOnly; Secure; SameSite=None\nTS01a8e1d0=01d9c3d318e789ba678d5f510903cba2d9619d84e41bf1c929f6e26ea46b7f1e54ca58bc9b6bd16f994b3bb7e0caef0d22a250a0b899a9ab291180f115e665a2bf2fcf1bc0e29453f044b15ea9f8e63f306898e32b; Path=/; HttpOnly; Secure; SameSite=None\nTS01475d6e=01d9c3d3184a405cd3209da19940a565bc108c3bee1bf1c929f6e26ea46b7f1e54ca58bc9b6bd16f994b3bb7e0caef0d22a250a0b899a9ab291180f115e665a2bf2fcf1bc034dc00a2765a0836aef4d17e99fe02dafe861cb9915ad5f03fac2b6c7c99009f; path=/pag_Home/Tramites.html; HttpOnly; Secure; SameSite=None",
            "strict-transport-security": "max-age=63072000; preload",
            "transfer-encoding": "chunked",
            "vary": "Accept-Encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1;mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add a Content-Security-Policy header",
            "urgency": "high",
            "detail": "Add an appropriate CSP to reduce script injection and resource loading risk."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 30,
        "urgency": "medium",
        "origin": "https://administracion.gob.es",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://administracion.gob.es/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/favicon.ico",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 2403496.2,
        "checks": {
          "hasEffectiveTextCompression": false
        },
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "estimatedSavingsBytes": 1313541,
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "estimatedSavingsBytes": 891965,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "estimatedSavingsBytes": 126680.2,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "estimatedSavingsBytes": 63759,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "estimatedSavingsBytes": 7551,
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings."
          }
        ],
        "recommendations": [
          {
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
          },
          {
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
          },
          {
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 7.37 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 4163853.2,
        "totalEstimatedBlockingMs": 8958,
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable text compression",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat.",
            "estimatedSavingsBytes": 1313541,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,283 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-text-compression"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 1202861,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,175 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 891965,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 871 KiB",
            "urgency": "high",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unused-javascript",
            "title": "Remove unused JavaScript",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code.",
            "estimatedSavingsBytes": 482075,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 471 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-javascript"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 8958,
            "displayValue": "Est savings of 8,960 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 126680.2,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 124 KiB",
            "urgency": "medium",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "offscreen-images",
            "title": "Lazy-load offscreen images",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed.",
            "estimatedSavingsBytes": 75421,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 74 KiB",
            "urgency": "medium",
            "sourceAuditId": "offscreen-images"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 63759,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 62 KiB",
            "urgency": "medium",
            "sourceAuditId": "unminified-javascript"
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss.",
            "estimatedSavingsBytes": 7551,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-optimized-images"
          }
        ],
        "recommendations": [
          {
            "title": "Enable text compression",
            "urgency": "high",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat. Estimated byte savings: 1.25 MB."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "high",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 1.15 MB."
          },
          {
            "title": "Minify CSS",
            "urgency": "high",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 871.06 KB."
          },
          {
            "title": "Remove unused JavaScript",
            "urgency": "high",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code. Estimated byte savings: 470.78 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 8958 ms."
          },
          {
            "title": "Serve images in next-gen formats",
            "urgency": "medium",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 123.71 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1867371
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.78 MB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.78 MB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 32,
        "urgency": "high",
        "transferBytes": 2024413,
        "css": {
          "unusedBytes": 1202861,
          "ratio": 0.5941776702678752,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 482075,
          "duplicatedBytes": 0,
          "ratio": 0.2381307569157084,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "high",
            "estimatedSavingsBytes": 1202861,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          },
          {
            "area": "javascript",
            "title": "Remove unused JavaScript and feature bundles",
            "urgency": "high",
            "estimatedSavingsBytes": 482075,
            "strategy": "Drop unused packages and feature code, or move them behind route-level or interaction-triggered imports.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 35,
        "urgency": "high",
        "transferBytes": 2024413,
        "estimatedDeferrableBytes": 1760357,
        "renderBlockingMs": 8958,
        "breakdown": {
          "offscreenImageSavings": 75421,
          "unusedJavascriptSavings": 482075,
          "unusedCssSavings": 1202861
        },
        "candidates": [
          {
            "title": "Lazy-load offscreen images",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 75421,
            "strategy": "Load below-the-fold images only when they approach the viewport.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Defer non-critical JavaScript",
            "area": "javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 482075,
            "strategy": "Split bundles and load feature code on interaction or route transition.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1202861,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 8958,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy stylesheet from administracion.gob.es",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from administracion.gob.es",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 254418,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from administracion.gob.es",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.googletagmanager.com",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 145381,
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 17,
        "urgency": "low",
        "providerCount": 1,
        "requestCount": 1,
        "transferBytes": 145381,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 145381,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "low",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          }
        ]
      },
      "redundancy": {
        "score": 68,
        "urgency": "high",
        "transferBytes": 2024413,
        "estimatedRedundantBytes": 1684936,
        "redundancyRatio": 0.8323084271835836,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 1202861,
            "displayValue": "Est savings of 1,175 KiB"
          },
          {
            "auditId": "unused-javascript",
            "title": "Reduce unused JavaScript",
            "savingsBytes": 482075,
            "displayValue": "Est savings of 471 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "high",
            "estimatedSavingsBytes": 1202861,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce unused javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 482075,
            "auditId": "unused-javascript",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Enable and verify text compression",
            "urgency": "medium",
            "estimatedSavingsBytes": 1313541,
            "auditId": "uses-text-compression",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 46,
        "urgency": "high",
        "totalTransferBytes": 2024413,
        "heavyRequestCount": 5,
        "heavyBytes": 1780599,
        "heavyRatio": 0.8795631128628397,
        "heavyRequests": [
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "transferSize": 1177193,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "transferSize": 254418,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "transferSize": 159823,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "transferSize": 145381,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/libs/jquery.mCustomScrollbar.css",
            "transferSize": 43784,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 1220977
          },
          {
            "resourceType": "script",
            "count": 2,
            "transferBytes": 399799
          },
          {
            "resourceType": "image",
            "count": 1,
            "transferBytes": 159823
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "administracion.gob.es",
            "count": 4,
            "transferBytes": 1635218
          },
          {
            "domain": "www.googletagmanager.com",
            "count": 1,
            "transferBytes": 145381
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Lazy-load offscreen images and media galleries",
            "urgency": "medium",
            "estimatedSavingsBytes": 75421,
            "strategy": "Load imagery only when it enters the viewport or when a user opens the relevant section.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Split JavaScript by route or interaction",
            "urgency": "high",
            "estimatedSavingsBytes": 482075,
            "strategy": "Move non-critical bundles behind route-level or event-driven imports so they are only fetched on demand.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy stylesheet asset from administracion.gob.es",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "strategy": "Split this stylesheet so component-specific CSS is delivered only when the component is rendered.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 254418,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0,
          "displayValue": "11.3 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 11.3 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": 0.07,
          "displayValue": "10.5 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- Current value: 10.5 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": 0,
          "displayValue": "Est savings of 471 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- Current value: Est savings of 471 KiB\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 1,175 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 1,175 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 8,960 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 8,960 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": 0,
          "displayValue": "Est savings of 1,283 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- Current value: Est savings of 1,283 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 124 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 124 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 7 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- Current value: Est savings of 7 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 74 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- Current value: Est savings of 74 KiB\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://administracion.gob.es/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/viajes/transporte-animales",
      "status": "ok",
      "finalUrl": "https://administracion.gob.es/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/viajes/transporte-animales",
      "performanceScore": 0.55,
      "bestPracticesScore": 0.79,
      "transferBytes": 2196074,
      "co2Grams": 0.8412751024236,
      "greenWeb": {
        "page": {
          "hostname": "administracion.gob.es",
          "checked": true,
          "status": "not-green",
          "green": false,
          "hostedBy": null,
          "hostedByWebsite": null,
          "listedProvider": null,
          "partner": null,
          "modified": "2026-03-29T13:38:28.588564",
          "supportingDocuments": [],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/administracion.gob.es",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290277,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "not-green",
          "externalOriginCount": 1,
          "greenCount": 1,
          "notGreenCount": 1,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 70,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/buscador/buscadorsimple.htm|input|text|q|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "q",
            "formContext": "form|get|/buscador/buscadorsimple.htm",
            "hasLabel": false,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 70,
              "urgency": "high",
              "issues": [
                "Missing associated label",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add a programmatic label using <label>, aria-label, or aria-labelledby.",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "Missing associated label",
            "urgency": "high",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 25,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": true,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": false,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Viajar con animales de compañía en el interior de la UE - Viajar dentro de la UE - Ciudadanos - Tus derechos y obligaciones en la UE - Tu espacio europeo - Punto de Acceso General",
          "lang": "eu",
          "charset": "",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Conoce lo que tienes que tener en cuenta para viajar con tu mascota en el interior de la UE",
          "robots": "all",
          "canonical": "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/viajes/transporte-animales",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 32,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 37,
          "tabletSmallTapTargets": 69,
          "fixedWidthOffenders": 1,
          "oversizedMedia": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 399,
            "viewportHeight": 864,
            "contentWidth": 399,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 1,
            "smallTapTargets": 37,
            "oversizedMedia": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 829,
            "viewportHeight": 1193,
            "contentWidth": 829,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 69,
            "oversizedMedia": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 37 small targets on mobile and 69 on tablet."
          },
          {
            "title": "Refactor fixed-width components",
            "urgency": "medium",
            "detail": "1 element(s) exceeded viewport width in tested layouts; use responsive component constraints."
          }
        ]
      },
      "securityLight": {
        "score": 31,
        "urgency": "medium",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": false,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "connection": "Keep-Alive",
            "content-encoding": "gzip",
            "content-type": "text/html;charset=UTF-8",
            "date": "Mon, 30 Mar 2026 00:47:55 GMT",
            "keep-alive": "timeout=15, max=500",
            "referrer-policy": "origin-when-cross-origin,strict-origin-when-cross-origin",
            "server": "Microsoft-IIS/5.0",
            "set-cookie": "VISITOR=returning; Path=/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/ciudadanos; HttpOnly; Secure; SameSite=None\nTS01a8e1d0=01d9c3d318e789ba678d5f510903cba2d9619d84e41bf1c929f6e26ea46b7f1e54ca58bc9b6bd16f994b3bb7e0caef0d22a250a0b899a9ab291180f115e665a2bf2fcf1bc0e29453f044b15ea9f8e63f306898e32b; Path=/; HttpOnly; Secure; SameSite=None\nTS011d349b=01d9c3d3183d0ab5e35f0a4d3b0e06f02e6973180380529b1b9ba56384d07a19b66567890ae44783a444bdd5d48d6a967bacc4b9ad4bff902aea9909935fb9326af3d6d004f98a4d48eaff3a52021502918d296d1fe81761193e34385adc30c5a064c0078b; path=/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/ciudadanos; HttpOnly; Secure; SameSite=None",
            "strict-transport-security": "max-age=63072000; preload",
            "transfer-encoding": "chunked",
            "vary": "Accept-Encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1;mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add a Content-Security-Policy header",
            "urgency": "high",
            "detail": "Add an appropriate CSP to reduce script injection and resource loading risk."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 30,
        "urgency": "medium",
        "origin": "https://administracion.gob.es",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://administracion.gob.es/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/favicon.ico",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 2403496.2,
        "checks": {
          "hasEffectiveTextCompression": false
        },
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "estimatedSavingsBytes": 1313541,
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "estimatedSavingsBytes": 891965,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "estimatedSavingsBytes": 126680.2,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "estimatedSavingsBytes": 63759,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "estimatedSavingsBytes": 7551,
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings."
          }
        ],
        "recommendations": [
          {
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
          },
          {
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
          },
          {
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 7.37 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 4245711.2,
        "totalEstimatedBlockingMs": 8985,
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable text compression",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat.",
            "estimatedSavingsBytes": 1313541,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,283 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-text-compression"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 1195684,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,168 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 891965,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 871 KiB",
            "urgency": "high",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unused-javascript",
            "title": "Remove unused JavaScript",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code.",
            "estimatedSavingsBytes": 546489,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 534 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-javascript"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 8985,
            "displayValue": "Est savings of 8,990 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 126680.2,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 124 KiB",
            "urgency": "medium",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "offscreen-images",
            "title": "Lazy-load offscreen images",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed.",
            "estimatedSavingsBytes": 93330,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 91 KiB",
            "urgency": "medium",
            "sourceAuditId": "offscreen-images"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 63759,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 62 KiB",
            "urgency": "medium",
            "sourceAuditId": "unminified-javascript"
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss.",
            "estimatedSavingsBytes": 7551,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-optimized-images"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 6712,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-responsive-images"
          }
        ],
        "recommendations": [
          {
            "title": "Enable text compression",
            "urgency": "high",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat. Estimated byte savings: 1.25 MB."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "high",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 1.14 MB."
          },
          {
            "title": "Minify CSS",
            "urgency": "high",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 871.06 KB."
          },
          {
            "title": "Remove unused JavaScript",
            "urgency": "high",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code. Estimated byte savings: 533.68 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 8985 ms."
          },
          {
            "title": "Serve images in next-gen formats",
            "urgency": "medium",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 123.71 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1887531
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.80 MB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.80 MB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 30,
        "urgency": "high",
        "transferBytes": 2196074,
        "css": {
          "unusedBytes": 1195684,
          "ratio": 0.5444643486512749,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 546489,
          "duplicatedBytes": 0,
          "ratio": 0.24884817178291807,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "high",
            "estimatedSavingsBytes": 1195684,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          },
          {
            "area": "javascript",
            "title": "Remove unused JavaScript and feature bundles",
            "urgency": "high",
            "estimatedSavingsBytes": 546489,
            "strategy": "Drop unused packages and feature code, or move them behind route-level or interaction-triggered imports.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 35,
        "urgency": "high",
        "transferBytes": 2196074,
        "estimatedDeferrableBytes": 1835503,
        "renderBlockingMs": 8985,
        "breakdown": {
          "offscreenImageSavings": 93330,
          "unusedJavascriptSavings": 546489,
          "unusedCssSavings": 1195684
        },
        "candidates": [
          {
            "title": "Lazy-load offscreen images",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 93330,
            "strategy": "Load below-the-fold images only when they approach the viewport.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Defer non-critical JavaScript",
            "area": "javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 546489,
            "strategy": "Split bundles and load feature code on interaction or route transition.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1195684,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 8985,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy stylesheet from administracion.gob.es",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from administracion.gob.es",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 254418,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from administracion.gob.es",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 159817,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.googletagmanager.com",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 145491,
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 34,
        "urgency": "medium",
        "providerCount": 1,
        "requestCount": 2,
        "transferBytes": 290277,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290277,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "medium",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "medium",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          }
        ]
      },
      "redundancy": {
        "score": 66,
        "urgency": "high",
        "transferBytes": 2196074,
        "estimatedRedundantBytes": 1742173,
        "redundancyRatio": 0.793312520434193,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 1195684,
            "displayValue": "Est savings of 1,168 KiB"
          },
          {
            "auditId": "unused-javascript",
            "title": "Reduce unused JavaScript",
            "savingsBytes": 546489,
            "displayValue": "Est savings of 534 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "high",
            "estimatedSavingsBytes": 1195684,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce unused javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 546489,
            "auditId": "unused-javascript",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Enable and verify text compression",
            "urgency": "medium",
            "estimatedSavingsBytes": 1313541,
            "auditId": "uses-text-compression",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 47,
        "urgency": "high",
        "totalTransferBytes": 2196074,
        "heavyRequestCount": 6,
        "heavyBytes": 1925489,
        "heavyRatio": 0.8767869388736446,
        "heavyRequests": [
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "transferSize": 1177193,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "transferSize": 254418,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "transferSize": 159817,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "transferSize": 145491,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-4YNNM3J1E0&cx=c&gtm=4e63q0h2",
            "transferSize": 144786,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/libs/jquery.mCustomScrollbar.css",
            "transferSize": 43784,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 1220977
          },
          {
            "resourceType": "script",
            "count": 3,
            "transferBytes": 544695
          },
          {
            "resourceType": "image",
            "count": 1,
            "transferBytes": 159817
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "administracion.gob.es",
            "count": 4,
            "transferBytes": 1635212
          },
          {
            "domain": "www.googletagmanager.com",
            "count": 2,
            "transferBytes": 290277
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Lazy-load offscreen images and media galleries",
            "urgency": "medium",
            "estimatedSavingsBytes": 93330,
            "strategy": "Load imagery only when it enters the viewport or when a user opens the relevant section.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Split JavaScript by route or interaction",
            "urgency": "high",
            "estimatedSavingsBytes": 546489,
            "strategy": "Move non-critical bundles behind route-level or event-driven imports so they are only fetched on demand.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy stylesheet asset from administracion.gob.es",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "strategy": "Split this stylesheet so component-specific CSS is delivered only when the component is rendered.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 254418,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 159817,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0,
          "displayValue": "12.4 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 12.4 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": 0.01,
          "displayValue": "13.9 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- Current value: 13.9 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": 0,
          "displayValue": "Est savings of 534 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- Current value: Est savings of 534 KiB\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 1,168 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 1,168 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 8,990 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 8,990 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": 0,
          "displayValue": "Est savings of 1,283 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- Current value: Est savings of 1,283 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 124 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 124 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 7 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- Current value: Est savings of 7 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 91 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- Current value: Est savings of 91 KiB\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://administracion.gob.es/pag_Home/gl/Tu-espacio-europeo/derechos-obligaciones/empresas/servicios/actividades-transfronterizas/registros-notariado",
      "status": "ok",
      "finalUrl": "https://administracion.gob.es/pag_Home/gl/Tu-espacio-europeo/derechos-obligaciones/empresas/servicios/actividades-transfronterizas/registros-notariado",
      "performanceScore": 0.55,
      "bestPracticesScore": 0.79,
      "transferBytes": 2187751,
      "co2Grams": 0.8380867159314002,
      "greenWeb": {
        "page": {
          "hostname": "administracion.gob.es",
          "checked": true,
          "status": "not-green",
          "green": false,
          "hostedBy": null,
          "hostedByWebsite": null,
          "listedProvider": null,
          "partner": null,
          "modified": "2026-03-29T13:38:28.588564",
          "supportingDocuments": [],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/administracion.gob.es",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290066,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "not-green",
          "externalOriginCount": 1,
          "greenCount": 1,
          "notGreenCount": 1,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 70,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/buscador/buscadorsimple.htm|input|text|q|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "q",
            "formContext": "form|get|/buscador/buscadorsimple.htm",
            "hasLabel": false,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 70,
              "urgency": "high",
              "issues": [
                "Missing associated label",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add a programmatic label using <label>, aria-label, or aria-labelledby.",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "Missing associated label",
            "urgency": "high",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 25,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": true,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": false,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Actividades transfronterizas. Registros y notariado - Notificación de actividades transfronterizas - Servicios - Empresas - Tus derechos y obligaciones en la UE - Tu espacio europeo - Punto de Acceso General",
          "lang": "gl",
          "charset": "",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Conoce las obligaciones y notificaciones de los registros mercantiles en el ámbito de las actividades empresariales transfronterizas.",
          "robots": "all",
          "canonical": "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/empresas/servicios/actividades-transfronterizas/registros-notariado",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 34,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 28,
          "tabletSmallTapTargets": 59,
          "fixedWidthOffenders": 2,
          "oversizedMedia": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 399,
            "viewportHeight": 864,
            "contentWidth": 399,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 2,
            "smallTapTargets": 28,
            "oversizedMedia": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 829,
            "viewportHeight": 1193,
            "contentWidth": 829,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 59,
            "oversizedMedia": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 28 small targets on mobile and 59 on tablet."
          },
          {
            "title": "Refactor fixed-width components",
            "urgency": "medium",
            "detail": "2 element(s) exceeded viewport width in tested layouts; use responsive component constraints."
          }
        ]
      },
      "securityLight": {
        "score": 31,
        "urgency": "medium",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": false,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "connection": "Keep-Alive",
            "content-encoding": "gzip",
            "content-length": "12787",
            "content-type": "text/html;charset=UTF-8",
            "date": "Mon, 30 Mar 2026 00:48:21 GMT",
            "keep-alive": "timeout=15, max=500",
            "referrer-policy": "origin-when-cross-origin,strict-origin-when-cross-origin",
            "server": "Microsoft-IIS/5.0",
            "set-cookie": "VISITOR=returning; Path=/pag_Home/gl/Tu-espacio-europeo/derechos-obligaciones/empresas; HttpOnly; Secure; SameSite=None\nTS01a8e1d0=01d9c3d318e789ba678d5f510903cba2d9619d84e41bf1c929f6e26ea46b7f1e54ca58bc9b6bd16f994b3bb7e0caef0d22a250a0b899a9ab291180f115e665a2bf2fcf1bc0e29453f044b15ea9f8e63f306898e32b; Path=/; HttpOnly; Secure; SameSite=None\nTS013efc47=01d9c3d318e30d71c8f2baaadc7a422b508ec8f1b51a950e85b01dc930419b68c9a1e8639e95ff7a154a24dc16c6430f061b90f0ea52fcc5b3e1b8ca06f6cbb2c8c1d7490c1d9f388aaa462aa361eb925e482f499148a2e0fb86903edf66edba02ee20c5cf; path=/pag_Home/gl/Tu-espacio-europeo/derechos-obligaciones/empresas; HttpOnly; Secure; SameSite=None",
            "strict-transport-security": "max-age=63072000; preload",
            "vary": "Accept-Encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1;mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add a Content-Security-Policy header",
            "urgency": "high",
            "detail": "Add an appropriate CSP to reduce script injection and resource loading risk."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 30,
        "urgency": "medium",
        "origin": "https://administracion.gob.es",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://administracion.gob.es/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/favicon.ico",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 2403496.2,
        "checks": {
          "hasEffectiveTextCompression": false
        },
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "estimatedSavingsBytes": 1313541,
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "estimatedSavingsBytes": 891965,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "estimatedSavingsBytes": 126680.2,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "estimatedSavingsBytes": 63759,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "estimatedSavingsBytes": 7551,
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings."
          }
        ],
        "recommendations": [
          {
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
          },
          {
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
          },
          {
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 7.37 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 4245183.2,
        "totalEstimatedBlockingMs": 9061,
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable text compression",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat.",
            "estimatedSavingsBytes": 1313541,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,283 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-text-compression"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 1198075,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,170 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 891965,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 871 KiB",
            "urgency": "high",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unused-javascript",
            "title": "Remove unused JavaScript",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code.",
            "estimatedSavingsBytes": 545785,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 533 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-javascript"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9061,
            "displayValue": "Est savings of 9,060 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 126680.2,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 124 KiB",
            "urgency": "medium",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "offscreen-images",
            "title": "Lazy-load offscreen images",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed.",
            "estimatedSavingsBytes": 91115,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 89 KiB",
            "urgency": "medium",
            "sourceAuditId": "offscreen-images"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 63759,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 62 KiB",
            "urgency": "medium",
            "sourceAuditId": "unminified-javascript"
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss.",
            "estimatedSavingsBytes": 7551,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-optimized-images"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 6712,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-responsive-images"
          }
        ],
        "recommendations": [
          {
            "title": "Enable text compression",
            "urgency": "high",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat. Estimated byte savings: 1.25 MB."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "high",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 1.14 MB."
          },
          {
            "title": "Minify CSS",
            "urgency": "high",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 871.06 KB."
          },
          {
            "title": "Remove unused JavaScript",
            "urgency": "high",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code. Estimated byte savings: 532.99 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 9061 ms."
          },
          {
            "title": "Serve images in next-gen formats",
            "urgency": "medium",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 123.71 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1882020
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.79 MB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.79 MB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 30,
        "urgency": "high",
        "transferBytes": 2187751,
        "css": {
          "unusedBytes": 1198075,
          "ratio": 0.5476285921021177,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 545785,
          "duplicatedBytes": 0,
          "ratio": 0.24947308903069865,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "high",
            "estimatedSavingsBytes": 1198075,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          },
          {
            "area": "javascript",
            "title": "Remove unused JavaScript and feature bundles",
            "urgency": "high",
            "estimatedSavingsBytes": 545785,
            "strategy": "Drop unused packages and feature code, or move them behind route-level or interaction-triggered imports.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 35,
        "urgency": "high",
        "transferBytes": 2187751,
        "estimatedDeferrableBytes": 1834975,
        "renderBlockingMs": 9061,
        "breakdown": {
          "offscreenImageSavings": 91115,
          "unusedJavascriptSavings": 545785,
          "unusedCssSavings": 1198075
        },
        "candidates": [
          {
            "title": "Lazy-load offscreen images",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 91115,
            "strategy": "Load below-the-fold images only when they approach the viewport.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Defer non-critical JavaScript",
            "area": "javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 545785,
            "strategy": "Split bundles and load feature code on interaction or route transition.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1198075,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9061,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy stylesheet from administracion.gob.es",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from administracion.gob.es",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 254418,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from administracion.gob.es",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 159935,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.googletagmanager.com",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 145381,
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 34,
        "urgency": "medium",
        "providerCount": 1,
        "requestCount": 2,
        "transferBytes": 290066,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290066,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "medium",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "medium",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          }
        ]
      },
      "redundancy": {
        "score": 69,
        "urgency": "high",
        "transferBytes": 2187751,
        "estimatedRedundantBytes": 1743860,
        "redundancyRatio": 0.7971016811328163,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 1198075,
            "displayValue": "Est savings of 1,170 KiB"
          },
          {
            "auditId": "unused-javascript",
            "title": "Reduce unused JavaScript",
            "savingsBytes": 545785,
            "displayValue": "Est savings of 533 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "high",
            "estimatedSavingsBytes": 1198075,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce unused javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 545785,
            "auditId": "unused-javascript",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Enable and verify text compression",
            "urgency": "medium",
            "estimatedSavingsBytes": 1313541,
            "auditId": "uses-text-compression",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 47,
        "urgency": "high",
        "totalTransferBytes": 2187751,
        "heavyRequestCount": 6,
        "heavyBytes": 1925396,
        "heavyRatio": 0.8800800456724737,
        "heavyRequests": [
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "transferSize": 1177193,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "transferSize": 254418,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "transferSize": 159935,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "transferSize": 145381,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-4YNNM3J1E0&cx=c&gtm=4e63p1h1",
            "transferSize": 144685,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/libs/jquery.mCustomScrollbar.css",
            "transferSize": 43784,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 1220977
          },
          {
            "resourceType": "script",
            "count": 3,
            "transferBytes": 544484
          },
          {
            "resourceType": "image",
            "count": 1,
            "transferBytes": 159935
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "administracion.gob.es",
            "count": 4,
            "transferBytes": 1635330
          },
          {
            "domain": "www.googletagmanager.com",
            "count": 2,
            "transferBytes": 290066
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Lazy-load offscreen images and media galleries",
            "urgency": "medium",
            "estimatedSavingsBytes": 91115,
            "strategy": "Load imagery only when it enters the viewport or when a user opens the relevant section.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Split JavaScript by route or interaction",
            "urgency": "high",
            "estimatedSavingsBytes": 545785,
            "strategy": "Move non-critical bundles behind route-level or event-driven imports so they are only fetched on demand.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy stylesheet asset from administracion.gob.es",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "strategy": "Split this stylesheet so component-specific CSS is delivered only when the component is rendered.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 254418,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 159935,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0,
          "displayValue": "11.6 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 11.6 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": 0,
          "displayValue": "16.4 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- Current value: 16.4 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": 0,
          "displayValue": "Est savings of 533 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- Current value: Est savings of 533 KiB\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 1,170 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 1,170 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 9,060 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 9,060 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": 0,
          "displayValue": "Est savings of 1,283 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- Current value: Est savings of 1,283 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 124 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 124 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 7 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- Current value: Est savings of 7 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 89 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- Current value: Est savings of 89 KiB\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://administracion.gob.es/pag_Home/gl/Tu-espacio-europeo/derechos-obligaciones/empresas/empleados/seguridad-social/alta-empresario",
      "status": "ok",
      "finalUrl": "https://administracion.gob.es/pag_Home/gl/Tu-espacio-europeo/derechos-obligaciones/empresas/empleados/seguridad-social/alta-empresario",
      "performanceScore": 0.55,
      "bestPracticesScore": 0.79,
      "transferBytes": 2189643,
      "co2Grams": 0.8388115059402,
      "greenWeb": {
        "page": {
          "hostname": "administracion.gob.es",
          "checked": true,
          "status": "not-green",
          "green": false,
          "hostedBy": null,
          "hostedByWebsite": null,
          "listedProvider": null,
          "partner": null,
          "modified": "2026-03-29T13:38:28.588564",
          "supportingDocuments": [],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/administracion.gob.es",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290073,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "not-green",
          "externalOriginCount": 1,
          "greenCount": 1,
          "notGreenCount": 1,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 70,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/buscador/buscadorsimple.htm|input|text|q|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "q",
            "formContext": "form|get|/buscador/buscadorsimple.htm",
            "hasLabel": false,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 70,
              "urgency": "high",
              "issues": [
                "Missing associated label",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add a programmatic label using <label>, aria-label, or aria-labelledby.",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "Missing associated label",
            "urgency": "high",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 25,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": true,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": false,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Alta como empresario - Seguridad social - Empleados - Empresas - Tus derechos y obligaciones en la UE - Tu espacio europeo - Punto de Acceso General",
          "lang": "gl",
          "charset": "",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Conoce cuándo tienes que pedir el alta en la Seguridad Social como empresario y qué plazo tienes, en qué consiste darse de alta como empresario en la Seguridad Social, qué trámites debes realizar y cómo los haces, qué obligaciones tienes como empresario con la Seguridad Social.",
          "robots": "all",
          "canonical": "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/empresas/empleados/seguridad-social/alta-empresario",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 38,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 44,
          "tabletSmallTapTargets": 74,
          "fixedWidthOffenders": 4,
          "oversizedMedia": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 399,
            "viewportHeight": 864,
            "contentWidth": 399,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 4,
            "smallTapTargets": 44,
            "oversizedMedia": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 829,
            "viewportHeight": 1193,
            "contentWidth": 829,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 74,
            "oversizedMedia": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 44 small targets on mobile and 74 on tablet."
          },
          {
            "title": "Refactor fixed-width components",
            "urgency": "medium",
            "detail": "4 element(s) exceeded viewport width in tested layouts; use responsive component constraints."
          }
        ]
      },
      "securityLight": {
        "score": 31,
        "urgency": "medium",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": false,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "connection": "Keep-Alive",
            "content-encoding": "gzip",
            "content-type": "text/html;charset=UTF-8",
            "date": "Mon, 30 Mar 2026 00:48:45 GMT",
            "keep-alive": "timeout=15, max=500",
            "referrer-policy": "origin-when-cross-origin,strict-origin-when-cross-origin",
            "server": "Microsoft-IIS/5.0",
            "set-cookie": "VISITOR=returning; Path=/pag_Home/gl/Tu-espacio-europeo/derechos-obligaciones/empresas; HttpOnly; Secure; SameSite=None\nTS01a8e1d0=01d9c3d318e789ba678d5f510903cba2d9619d84e41bf1c929f6e26ea46b7f1e54ca58bc9b6bd16f994b3bb7e0caef0d22a250a0b899a9ab291180f115e665a2bf2fcf1bc0e29453f044b15ea9f8e63f306898e32b; Path=/; HttpOnly; Secure; SameSite=None\nTS013efc47=01d9c3d318e30d71c8f2baaadc7a422b508ec8f1b51a950e85b01dc930419b68c9a1e8639e95ff7a154a24dc16c6430f061b90f0ea52fcc5b3e1b8ca06f6cbb2c8c1d7490c1d9f388aaa462aa361eb925e482f499148a2e0fb86903edf66edba02ee20c5cf; path=/pag_Home/gl/Tu-espacio-europeo/derechos-obligaciones/empresas; HttpOnly; Secure; SameSite=None",
            "strict-transport-security": "max-age=63072000; preload",
            "transfer-encoding": "chunked",
            "vary": "Accept-Encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1;mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add a Content-Security-Policy header",
            "urgency": "high",
            "detail": "Add an appropriate CSP to reduce script injection and resource loading risk."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 30,
        "urgency": "medium",
        "origin": "https://administracion.gob.es",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://administracion.gob.es/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/favicon.ico",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 2403496.2,
        "checks": {
          "hasEffectiveTextCompression": false
        },
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "estimatedSavingsBytes": 1313541,
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "estimatedSavingsBytes": 891965,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "estimatedSavingsBytes": 126680.2,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "estimatedSavingsBytes": 63759,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "estimatedSavingsBytes": 7551,
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings."
          }
        ],
        "recommendations": [
          {
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
          },
          {
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
          },
          {
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 7.37 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 4244839.2,
        "totalEstimatedBlockingMs": 9213,
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable text compression",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat.",
            "estimatedSavingsBytes": 1313541,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,283 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-text-compression"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 1198008,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,170 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 891965,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 871 KiB",
            "urgency": "high",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unused-javascript",
            "title": "Remove unused JavaScript",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code.",
            "estimatedSavingsBytes": 545508,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 533 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-javascript"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9213,
            "displayValue": "Est savings of 9,210 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 126680.2,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 124 KiB",
            "urgency": "medium",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "offscreen-images",
            "title": "Lazy-load offscreen images",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed.",
            "estimatedSavingsBytes": 91115,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 89 KiB",
            "urgency": "medium",
            "sourceAuditId": "offscreen-images"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 63759,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 62 KiB",
            "urgency": "medium",
            "sourceAuditId": "unminified-javascript"
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss.",
            "estimatedSavingsBytes": 7551,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-optimized-images"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 6712,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-responsive-images"
          }
        ],
        "recommendations": [
          {
            "title": "Enable text compression",
            "urgency": "high",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat. Estimated byte savings: 1.25 MB."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "high",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 1.14 MB."
          },
          {
            "title": "Minify CSS",
            "urgency": "high",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 871.06 KB."
          },
          {
            "title": "Remove unused JavaScript",
            "urgency": "high",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code. Estimated byte savings: 532.72 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 9213 ms."
          },
          {
            "title": "Serve images in next-gen formats",
            "urgency": "medium",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 123.71 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1881908
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.79 MB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.79 MB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 30,
        "urgency": "high",
        "transferBytes": 2189643,
        "css": {
          "unusedBytes": 1198008,
          "ratio": 0.5471248052764766,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 545508,
          "duplicatedBytes": 0,
          "ratio": 0.24913102272836257,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "high",
            "estimatedSavingsBytes": 1198008,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          },
          {
            "area": "javascript",
            "title": "Remove unused JavaScript and feature bundles",
            "urgency": "high",
            "estimatedSavingsBytes": 545508,
            "strategy": "Drop unused packages and feature code, or move them behind route-level or interaction-triggered imports.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 35,
        "urgency": "high",
        "transferBytes": 2189643,
        "estimatedDeferrableBytes": 1834631,
        "renderBlockingMs": 9213,
        "breakdown": {
          "offscreenImageSavings": 91115,
          "unusedJavascriptSavings": 545508,
          "unusedCssSavings": 1198008
        },
        "candidates": [
          {
            "title": "Lazy-load offscreen images",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 91115,
            "strategy": "Load below-the-fold images only when they approach the viewport.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Defer non-critical JavaScript",
            "area": "javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 545508,
            "strategy": "Split bundles and load feature code on interaction or route transition.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1198008,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9213,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy stylesheet from administracion.gob.es",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from administracion.gob.es",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 254418,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from administracion.gob.es",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.googletagmanager.com",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 145384,
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 34,
        "urgency": "medium",
        "providerCount": 1,
        "requestCount": 2,
        "transferBytes": 290073,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290073,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "medium",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "medium",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          }
        ]
      },
      "redundancy": {
        "score": 66,
        "urgency": "high",
        "transferBytes": 2189643,
        "estimatedRedundantBytes": 1743516,
        "redundancyRatio": 0.7962558280048392,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 1198008,
            "displayValue": "Est savings of 1,170 KiB"
          },
          {
            "auditId": "unused-javascript",
            "title": "Reduce unused JavaScript",
            "savingsBytes": 545508,
            "displayValue": "Est savings of 533 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "high",
            "estimatedSavingsBytes": 1198008,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce unused javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 545508,
            "auditId": "unused-javascript",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Enable and verify text compression",
            "urgency": "medium",
            "estimatedSavingsBytes": 1313541,
            "auditId": "uses-text-compression",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 47,
        "urgency": "high",
        "totalTransferBytes": 2189643,
        "heavyRequestCount": 6,
        "heavyBytes": 1925291,
        "heavyRatio": 0.8792716438250436,
        "heavyRequests": [
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "transferSize": 1177193,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "transferSize": 254418,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "transferSize": 159823,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "transferSize": 145384,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-4YNNM3J1E0&cx=c&gtm=4e63p1",
            "transferSize": 144689,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/libs/jquery.mCustomScrollbar.css",
            "transferSize": 43784,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 1220977
          },
          {
            "resourceType": "script",
            "count": 3,
            "transferBytes": 544491
          },
          {
            "resourceType": "image",
            "count": 1,
            "transferBytes": 159823
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "administracion.gob.es",
            "count": 4,
            "transferBytes": 1635218
          },
          {
            "domain": "www.googletagmanager.com",
            "count": 2,
            "transferBytes": 290073
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Lazy-load offscreen images and media galleries",
            "urgency": "medium",
            "estimatedSavingsBytes": 91115,
            "strategy": "Load imagery only when it enters the viewport or when a user opens the relevant section.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Split JavaScript by route or interaction",
            "urgency": "high",
            "estimatedSavingsBytes": 545508,
            "strategy": "Move non-critical bundles behind route-level or event-driven imports so they are only fetched on demand.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy stylesheet asset from administracion.gob.es",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "strategy": "Split this stylesheet so component-specific CSS is delivered only when the component is rendered.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 254418,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0,
          "displayValue": "11.9 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 11.9 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": 0.01,
          "displayValue": "15.3 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- Current value: 15.3 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": 0,
          "displayValue": "Est savings of 533 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- Current value: Est savings of 533 KiB\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 1,170 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 1,170 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 9,210 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 9,210 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": 0,
          "displayValue": "Est savings of 1,283 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- Current value: Est savings of 1,283 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 124 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 124 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 7 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- Current value: Est savings of 7 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 89 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- Current value: Est savings of 89 KiB\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://administracion.gob.es/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/empresas/contratacion-publica/presentar-oferta",
      "status": "ok",
      "finalUrl": "https://administracion.gob.es/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/empresas/contratacion-publica/presentar-oferta",
      "performanceScore": 0.55,
      "bestPracticesScore": 0.79,
      "transferBytes": 2238659,
      "co2Grams": 0.8575886238426002,
      "greenWeb": {
        "page": {
          "hostname": "administracion.gob.es",
          "checked": true,
          "status": "not-green",
          "green": false,
          "hostedBy": null,
          "hostedByWebsite": null,
          "listedProvider": null,
          "partner": null,
          "modified": "2026-03-29T13:38:28.588564",
          "supportingDocuments": [],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/administracion.gob.es",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290073,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "not-green",
          "externalOriginCount": 1,
          "greenCount": 1,
          "notGreenCount": 1,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 70,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/buscador/buscadorsimple.htm|input|text|q|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "q",
            "formContext": "form|get|/buscador/buscadorsimple.htm",
            "hasLabel": false,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 70,
              "urgency": "high",
              "issues": [
                "Missing associated label",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add a programmatic label using <label>, aria-label, or aria-labelledby.",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "Missing associated label",
            "urgency": "high",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 25,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": true,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": false,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Contratación pública: Presentación de ofertas - Contratación pública - Empresas - Tus derechos y obligaciones en la UE - Tu espacio europeo - Punto de Acceso General",
          "lang": "eu",
          "charset": "",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Conoce la presentación electrónica de ofertas, los sistemas de licitación electrónica, cómo se firma electrónicamente una oferta, problemas con la presentación electrónica.",
          "robots": "all",
          "canonical": "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/empresas/contratacion-publica/presentar-oferta",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 36,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 47,
          "tabletSmallTapTargets": 77,
          "fixedWidthOffenders": 3,
          "oversizedMedia": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 399,
            "viewportHeight": 864,
            "contentWidth": 399,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 3,
            "smallTapTargets": 47,
            "oversizedMedia": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 829,
            "viewportHeight": 1193,
            "contentWidth": 829,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 77,
            "oversizedMedia": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 47 small targets on mobile and 77 on tablet."
          },
          {
            "title": "Refactor fixed-width components",
            "urgency": "medium",
            "detail": "3 element(s) exceeded viewport width in tested layouts; use responsive component constraints."
          }
        ]
      },
      "securityLight": {
        "score": 33,
        "urgency": "medium",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": false,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 2,
          "externalScriptsWithoutIntegrity": 2,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "connection": "Keep-Alive",
            "content-encoding": "gzip",
            "content-type": "text/html;charset=UTF-8",
            "date": "Mon, 30 Mar 2026 00:49:09 GMT",
            "keep-alive": "timeout=15, max=500",
            "referrer-policy": "origin-when-cross-origin,strict-origin-when-cross-origin",
            "server": "Microsoft-IIS/5.0",
            "set-cookie": "VISITOR=returning; Path=/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/empresas; HttpOnly; Secure; SameSite=None\nTS01a8e1d0=01d9c3d318e789ba678d5f510903cba2d9619d84e41bf1c929f6e26ea46b7f1e54ca58bc9b6bd16f994b3bb7e0caef0d22a250a0b899a9ab291180f115e665a2bf2fcf1bc0e29453f044b15ea9f8e63f306898e32b; Path=/; HttpOnly; Secure; SameSite=None\nTS01298ba9=01d9c3d3183d0ab5e35f0a4d3b0e06f02e6973180380529b1b9ba56384d07a19b66567890ae44783a444bdd5d48d6a967bacc4b9ad4bff902aea9909935fb9326af3d6d004f98a4d48eaff3a52021502918d296d1fe81761193e34385adc30c5a064c0078b; path=/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/empresas; HttpOnly; Secure; SameSite=None",
            "strict-transport-security": "max-age=63072000; preload",
            "transfer-encoding": "chunked",
            "vary": "Accept-Encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1;mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add a Content-Security-Policy header",
            "urgency": "high",
            "detail": "Add an appropriate CSP to reduce script injection and resource loading risk."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "2 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 30,
        "urgency": "medium",
        "origin": "https://administracion.gob.es",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://administracion.gob.es/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/favicon.ico",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 2403496.2,
        "checks": {
          "hasEffectiveTextCompression": false
        },
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "estimatedSavingsBytes": 1313541,
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "estimatedSavingsBytes": 891965,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "estimatedSavingsBytes": 126680.2,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "estimatedSavingsBytes": 63759,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "estimatedSavingsBytes": 7551,
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings."
          }
        ],
        "recommendations": [
          {
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
          },
          {
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
          },
          {
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 7.37 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 4278507.2,
        "totalEstimatedBlockingMs": 9302,
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable text compression",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat.",
            "estimatedSavingsBytes": 1313541,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,283 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-text-compression"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 1196122,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,168 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 891965,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 871 KiB",
            "urgency": "high",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unused-javascript",
            "title": "Remove unused JavaScript",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code.",
            "estimatedSavingsBytes": 546397,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 534 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-javascript"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9302,
            "displayValue": "Est savings of 9,300 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 126680.2,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 124 KiB",
            "urgency": "medium",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "offscreen-images",
            "title": "Lazy-load offscreen images",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed.",
            "estimatedSavingsBytes": 125780,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 123 KiB",
            "urgency": "medium",
            "sourceAuditId": "offscreen-images"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 63759,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 62 KiB",
            "urgency": "medium",
            "sourceAuditId": "unminified-javascript"
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss.",
            "estimatedSavingsBytes": 7551,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-optimized-images"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 6712,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-responsive-images"
          }
        ],
        "recommendations": [
          {
            "title": "Enable text compression",
            "urgency": "high",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat. Estimated byte savings: 1.25 MB."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "high",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 1.14 MB."
          },
          {
            "title": "Minify CSS",
            "urgency": "high",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 871.06 KB."
          },
          {
            "title": "Remove unused JavaScript",
            "urgency": "high",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code. Estimated byte savings: 533.59 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 9302 ms."
          },
          {
            "title": "Serve images in next-gen formats",
            "urgency": "medium",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 123.71 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 4,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 2,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "2 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1928256
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.84 MB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.84 MB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 30,
        "urgency": "high",
        "transferBytes": 2238659,
        "css": {
          "unusedBytes": 1196122,
          "ratio": 0.5343029018711648,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 546397,
          "duplicatedBytes": 0,
          "ratio": 0.2440733492684683,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "high",
            "estimatedSavingsBytes": 1196122,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          },
          {
            "area": "javascript",
            "title": "Remove unused JavaScript and feature bundles",
            "urgency": "high",
            "estimatedSavingsBytes": 546397,
            "strategy": "Drop unused packages and feature code, or move them behind route-level or interaction-triggered imports.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 35,
        "urgency": "high",
        "transferBytes": 2238659,
        "estimatedDeferrableBytes": 1868299,
        "renderBlockingMs": 9302,
        "breakdown": {
          "offscreenImageSavings": 125780,
          "unusedJavascriptSavings": 546397,
          "unusedCssSavings": 1196122
        },
        "candidates": [
          {
            "title": "Lazy-load offscreen images",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 125780,
            "strategy": "Load below-the-fold images only when they approach the viewport.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Defer non-critical JavaScript",
            "area": "javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 546397,
            "strategy": "Split bundles and load feature code on interaction or route transition.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1196122,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9302,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy stylesheet from administracion.gob.es",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from administracion.gob.es",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 254418,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from administracion.gob.es",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.googletagmanager.com",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 145384,
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 34,
        "urgency": "medium",
        "providerCount": 1,
        "requestCount": 2,
        "transferBytes": 290073,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290073,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "medium",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "medium",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          }
        ]
      },
      "redundancy": {
        "score": 68,
        "urgency": "high",
        "transferBytes": 2238659,
        "estimatedRedundantBytes": 1742519,
        "redundancyRatio": 0.7783762511396332,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 1196122,
            "displayValue": "Est savings of 1,168 KiB"
          },
          {
            "auditId": "unused-javascript",
            "title": "Reduce unused JavaScript",
            "savingsBytes": 546397,
            "displayValue": "Est savings of 534 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "high",
            "estimatedSavingsBytes": 1196122,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce unused javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 546397,
            "auditId": "unused-javascript",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Enable and verify text compression",
            "urgency": "medium",
            "estimatedSavingsBytes": 1313541,
            "auditId": "uses-text-compression",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 46,
        "urgency": "high",
        "totalTransferBytes": 2238659,
        "heavyRequestCount": 6,
        "heavyBytes": 1925291,
        "heavyRatio": 0.8600197707645515,
        "heavyRequests": [
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "transferSize": 1177193,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "transferSize": 254418,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "transferSize": 159823,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "transferSize": 145384,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-4YNNM3J1E0&cx=c&gtm=4e63p1",
            "transferSize": 144689,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/libs/jquery.mCustomScrollbar.css",
            "transferSize": 43784,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 1220977
          },
          {
            "resourceType": "script",
            "count": 3,
            "transferBytes": 544491
          },
          {
            "resourceType": "image",
            "count": 1,
            "transferBytes": 159823
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "administracion.gob.es",
            "count": 4,
            "transferBytes": 1635218
          },
          {
            "domain": "www.googletagmanager.com",
            "count": 2,
            "transferBytes": 290073
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Lazy-load offscreen images and media galleries",
            "urgency": "medium",
            "estimatedSavingsBytes": 125780,
            "strategy": "Load imagery only when it enters the viewport or when a user opens the relevant section.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Split JavaScript by route or interaction",
            "urgency": "high",
            "estimatedSavingsBytes": 546397,
            "strategy": "Move non-critical bundles behind route-level or event-driven imports so they are only fetched on demand.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy stylesheet asset from administracion.gob.es",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "strategy": "Split this stylesheet so component-specific CSS is delivered only when the component is rendered.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 254418,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0,
          "displayValue": "12.6 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 12.6 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": 0.02,
          "displayValue": "13.4 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- Current value: 13.4 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": 0,
          "displayValue": "Est savings of 534 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- Current value: Est savings of 534 KiB\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 1,168 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 1,168 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 9,300 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 9,300 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": 0,
          "displayValue": "Est savings of 1,283 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- Current value: Est savings of 1,283 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 124 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 124 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 7 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- Current value: Est savings of 7 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 123 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- Current value: Est savings of 123 KiB\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/consumidores/conexion-servicios/residuos",
      "status": "ok",
      "finalUrl": "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/consumidores/conexion-servicios/residuos",
      "performanceScore": 0.55,
      "bestPracticesScore": 0.79,
      "transferBytes": 2232759,
      "co2Grams": 0.8553284435826001,
      "greenWeb": {
        "page": {
          "hostname": "administracion.gob.es",
          "checked": true,
          "status": "not-green",
          "green": false,
          "hostedBy": null,
          "hostedByWebsite": null,
          "listedProvider": null,
          "partner": null,
          "modified": "2026-03-29T13:38:28.588564",
          "supportingDocuments": [],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/administracion.gob.es",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290073,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "not-green",
          "externalOriginCount": 1,
          "greenCount": 1,
          "notGreenCount": 1,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 70,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/buscador/buscadorsimple.htm|input|text|q|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "q",
            "formContext": "form|get|/buscador/buscadorsimple.htm",
            "hasLabel": false,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 70,
              "urgency": "high",
              "issues": [
                "Missing associated label",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add a programmatic label using <label>, aria-label, or aria-labelledby.",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "Missing associated label",
            "urgency": "high",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 35,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": false,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Eliminación de residuos domésticos - Conexión a servicios - Consumidores - Ciudadanos - Tus derechos y obligaciones en la UE - Tu espacio europeo - Punto de Acceso General",
          "lang": "es",
          "charset": "",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Información sobre qué es un residuo doméstico, servicios relacionados con los residuos domésticos y sistemas de recogida",
          "robots": "all",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 36,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 54,
          "tabletSmallTapTargets": 84,
          "fixedWidthOffenders": 3,
          "oversizedMedia": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 399,
            "viewportHeight": 864,
            "contentWidth": 399,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 3,
            "smallTapTargets": 54,
            "oversizedMedia": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 829,
            "viewportHeight": 1193,
            "contentWidth": 829,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 84,
            "oversizedMedia": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 54 small targets on mobile and 84 on tablet."
          },
          {
            "title": "Refactor fixed-width components",
            "urgency": "medium",
            "detail": "3 element(s) exceeded viewport width in tested layouts; use responsive component constraints."
          }
        ]
      },
      "securityLight": {
        "score": 33,
        "urgency": "medium",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": false,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 2,
          "externalScriptsWithoutIntegrity": 2,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "connection": "Keep-Alive",
            "content-encoding": "gzip",
            "content-length": "17695",
            "content-type": "text/html;charset=UTF-8",
            "date": "Mon, 30 Mar 2026 00:49:36 GMT",
            "keep-alive": "timeout=15, max=500",
            "referrer-policy": "origin-when-cross-origin,strict-origin-when-cross-origin",
            "server": "Microsoft-IIS/5.0",
            "set-cookie": "VISITOR=returning; Path=/pag_Home/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/consumidores; HttpOnly; Secure; SameSite=None\nTS01a8e1d0=01d9c3d318e789ba678d5f510903cba2d9619d84e41bf1c929f6e26ea46b7f1e54ca58bc9b6bd16f994b3bb7e0caef0d22a250a0b899a9ab291180f115e665a2bf2fcf1bc0e29453f044b15ea9f8e63f306898e32b; Path=/; HttpOnly; Secure; SameSite=None\nTS01e71884=01d9c3d3183d0ab5e35f0a4d3b0e06f02e6973180380529b1b9ba56384d07a19b66567890ae44783a444bdd5d48d6a967bacc4b9ad4bff902aea9909935fb9326af3d6d004f98a4d48eaff3a52021502918d296d1fe81761193e34385adc30c5a064c0078b; path=/pag_Home/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/consumidores; HttpOnly; Secure; SameSite=None",
            "strict-transport-security": "max-age=63072000; preload",
            "vary": "Accept-Encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1;mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add a Content-Security-Policy header",
            "urgency": "high",
            "detail": "Add an appropriate CSP to reduce script injection and resource loading risk."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "2 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 30,
        "urgency": "medium",
        "origin": "https://administracion.gob.es",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://administracion.gob.es/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/favicon.ico",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 2403496.2,
        "checks": {
          "hasEffectiveTextCompression": false
        },
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "estimatedSavingsBytes": 1313541,
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "estimatedSavingsBytes": 891965,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "estimatedSavingsBytes": 126680.2,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "estimatedSavingsBytes": 63759,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "estimatedSavingsBytes": 7551,
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings."
          }
        ],
        "recommendations": [
          {
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
          },
          {
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
          },
          {
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 7.37 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 4270168.2,
        "totalEstimatedBlockingMs": 9290,
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable text compression",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat.",
            "estimatedSavingsBytes": 1313541,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,283 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-text-compression"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 1195544,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,168 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 891965,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 871 KiB",
            "urgency": "high",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unused-javascript",
            "title": "Remove unused JavaScript",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code.",
            "estimatedSavingsBytes": 547292,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 534 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-javascript"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9290,
            "displayValue": "Est savings of 9,290 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 126680.2,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 124 KiB",
            "urgency": "medium",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "offscreen-images",
            "title": "Lazy-load offscreen images",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed.",
            "estimatedSavingsBytes": 117124,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 114 KiB",
            "urgency": "medium",
            "sourceAuditId": "offscreen-images"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 63759,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 62 KiB",
            "urgency": "medium",
            "sourceAuditId": "unminified-javascript"
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss.",
            "estimatedSavingsBytes": 7551,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-optimized-images"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 6712,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-responsive-images"
          }
        ],
        "recommendations": [
          {
            "title": "Enable text compression",
            "urgency": "high",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat. Estimated byte savings: 1.25 MB."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "high",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 1.14 MB."
          },
          {
            "title": "Minify CSS",
            "urgency": "high",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 871.06 KB."
          },
          {
            "title": "Remove unused JavaScript",
            "urgency": "high",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code. Estimated byte savings: 534.46 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 9290 ms."
          },
          {
            "title": "Serve images in next-gen formats",
            "urgency": "medium",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 123.71 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 4,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 2,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "2 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1922125
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.83 MB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.83 MB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 30,
        "urgency": "high",
        "transferBytes": 2232759,
        "css": {
          "unusedBytes": 1195544,
          "ratio": 0.5354559090345173,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 547292,
          "duplicatedBytes": 0,
          "ratio": 0.2451191552693327,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "high",
            "estimatedSavingsBytes": 1195544,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          },
          {
            "area": "javascript",
            "title": "Remove unused JavaScript and feature bundles",
            "urgency": "high",
            "estimatedSavingsBytes": 547292,
            "strategy": "Drop unused packages and feature code, or move them behind route-level or interaction-triggered imports.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 35,
        "urgency": "high",
        "transferBytes": 2232759,
        "estimatedDeferrableBytes": 1859960,
        "renderBlockingMs": 9290,
        "breakdown": {
          "offscreenImageSavings": 117124,
          "unusedJavascriptSavings": 547292,
          "unusedCssSavings": 1195544
        },
        "candidates": [
          {
            "title": "Lazy-load offscreen images",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 117124,
            "strategy": "Load below-the-fold images only when they approach the viewport.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Defer non-critical JavaScript",
            "area": "javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 547292,
            "strategy": "Split bundles and load feature code on interaction or route transition.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1195544,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9290,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy stylesheet from administracion.gob.es",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from administracion.gob.es",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 254529,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from administracion.gob.es",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.googletagmanager.com",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 145384,
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 34,
        "urgency": "medium",
        "providerCount": 1,
        "requestCount": 2,
        "transferBytes": 290073,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290073,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "medium",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "medium",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          }
        ]
      },
      "redundancy": {
        "score": 68,
        "urgency": "high",
        "transferBytes": 2232759,
        "estimatedRedundantBytes": 1742836,
        "redundancyRatio": 0.78057506430385,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 1195544,
            "displayValue": "Est savings of 1,168 KiB"
          },
          {
            "auditId": "unused-javascript",
            "title": "Reduce unused JavaScript",
            "savingsBytes": 547292,
            "displayValue": "Est savings of 534 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "high",
            "estimatedSavingsBytes": 1195544,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce unused javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 547292,
            "auditId": "unused-javascript",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Enable and verify text compression",
            "urgency": "medium",
            "estimatedSavingsBytes": 1313541,
            "auditId": "uses-text-compression",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 46,
        "urgency": "high",
        "totalTransferBytes": 2232759,
        "heavyRequestCount": 6,
        "heavyBytes": 1925402,
        "heavyRatio": 0.8623420619959431,
        "heavyRequests": [
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "transferSize": 1177193,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "transferSize": 254529,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "transferSize": 159823,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "transferSize": 145384,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-4YNNM3J1E0&cx=c&gtm=4e63p1",
            "transferSize": 144689,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/libs/jquery.mCustomScrollbar.css",
            "transferSize": 43784,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 1220977
          },
          {
            "resourceType": "script",
            "count": 3,
            "transferBytes": 544602
          },
          {
            "resourceType": "image",
            "count": 1,
            "transferBytes": 159823
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "administracion.gob.es",
            "count": 4,
            "transferBytes": 1635329
          },
          {
            "domain": "www.googletagmanager.com",
            "count": 2,
            "transferBytes": 290073
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Lazy-load offscreen images and media galleries",
            "urgency": "medium",
            "estimatedSavingsBytes": 117124,
            "strategy": "Load imagery only when it enters the viewport or when a user opens the relevant section.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Split JavaScript by route or interaction",
            "urgency": "high",
            "estimatedSavingsBytes": 547292,
            "strategy": "Move non-critical bundles behind route-level or event-driven imports so they are only fetched on demand.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy stylesheet asset from administracion.gob.es",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "strategy": "Split this stylesheet so component-specific CSS is delivered only when the component is rendered.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 254529,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0,
          "displayValue": "12.5 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 12.5 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": 0,
          "displayValue": "16.4 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- Current value: 16.4 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": 0,
          "displayValue": "Est savings of 534 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- Current value: Est savings of 534 KiB\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 1,168 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 1,168 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 9,290 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 9,290 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": 0,
          "displayValue": "Est savings of 1,283 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- Current value: Est savings of 1,283 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 124 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 124 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 7 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- Current value: Est savings of 7 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 114 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- Current value: Est savings of 114 KiB\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://administracion.gob.es/pag_Home/gl/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/consumidores/conexion-servicios/residuos",
      "status": "ok",
      "finalUrl": "https://administracion.gob.es/pag_Home/gl/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/consumidores/conexion-servicios/residuos",
      "performanceScore": 0.55,
      "bestPracticesScore": 0.79,
      "transferBytes": 2232443,
      "co2Grams": 0.8552073898602002,
      "greenWeb": {
        "page": {
          "hostname": "administracion.gob.es",
          "checked": true,
          "status": "not-green",
          "green": false,
          "hostedBy": null,
          "hostedByWebsite": null,
          "listedProvider": null,
          "partner": null,
          "modified": "2026-03-29T13:38:28.588564",
          "supportingDocuments": [],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/administracion.gob.es",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290073,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "not-green",
          "externalOriginCount": 1,
          "greenCount": 1,
          "notGreenCount": 1,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 70,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/buscador/buscadorsimple.htm|input|text|q|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "q",
            "formContext": "form|get|/buscador/buscadorsimple.htm",
            "hasLabel": false,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 70,
              "urgency": "high",
              "issues": [
                "Missing associated label",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add a programmatic label using <label>, aria-label, or aria-labelledby.",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "Missing associated label",
            "urgency": "high",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 25,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": true,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": false,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Eliminación de residuos domésticos - Conexión a servicios - Consumidores - Ciudadanos - Tus derechos y obligaciones en la UE - Tu espacio europeo - Punto de Acceso General",
          "lang": "gl",
          "charset": "",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Información sobre que é un residuo doméstico, servizos relacionados cos residuos domésticos e sistemas de recollida",
          "robots": "all",
          "canonical": "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/consumidores/conexion-servicios/residuos",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 36,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 54,
          "tabletSmallTapTargets": 84,
          "fixedWidthOffenders": 3,
          "oversizedMedia": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 399,
            "viewportHeight": 864,
            "contentWidth": 399,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 3,
            "smallTapTargets": 54,
            "oversizedMedia": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 829,
            "viewportHeight": 1193,
            "contentWidth": 829,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 84,
            "oversizedMedia": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 54 small targets on mobile and 84 on tablet."
          },
          {
            "title": "Refactor fixed-width components",
            "urgency": "medium",
            "detail": "3 element(s) exceeded viewport width in tested layouts; use responsive component constraints."
          }
        ]
      },
      "securityLight": {
        "score": 33,
        "urgency": "medium",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": false,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 2,
          "externalScriptsWithoutIntegrity": 2,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "connection": "Keep-Alive",
            "content-encoding": "gzip",
            "content-type": "text/html;charset=UTF-8",
            "date": "Mon, 30 Mar 2026 00:50:00 GMT",
            "keep-alive": "timeout=15, max=500",
            "referrer-policy": "origin-when-cross-origin,strict-origin-when-cross-origin",
            "server": "Microsoft-IIS/5.0",
            "set-cookie": "VISITOR=returning; Path=/pag_Home/gl/Tu-espacio-europeo/derechos-obligaciones/ciudadanos; HttpOnly; Secure; SameSite=None\nTS01a8e1d0=01d9c3d318e789ba678d5f510903cba2d9619d84e41bf1c929f6e26ea46b7f1e54ca58bc9b6bd16f994b3bb7e0caef0d22a250a0b899a9ab291180f115e665a2bf2fcf1bc0e29453f044b15ea9f8e63f306898e32b; Path=/; HttpOnly; Secure; SameSite=None\nTS0146228d=01d9c3d31875eb4ee065abf109a5ef141663ea9e5662999d88da62791f603954b0657e3ad206abe0e840a1f31af532847905d0382b90b7a84781f287b0f8ea376c270e95758790e5f992ab8a462f1118463bf9b8565956db104bfe20987b3f54c98e7c3998; path=/pag_Home/gl/Tu-espacio-europeo/derechos-obligaciones/ciudadanos; HttpOnly; Secure; SameSite=None",
            "strict-transport-security": "max-age=63072000; preload",
            "transfer-encoding": "chunked",
            "vary": "Accept-Encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1;mode=block",
            "traceresponse": "00-b2c1c261a90c79b30140b6939bbf4a8b-69730e07648d60a0-01",
            "x-dt-tracestate": "acd5d8fe-344161ca@dt"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add a Content-Security-Policy header",
            "urgency": "high",
            "detail": "Add an appropriate CSP to reduce script injection and resource loading risk."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "2 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 30,
        "urgency": "medium",
        "origin": "https://administracion.gob.es",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://administracion.gob.es/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/favicon.ico",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 2403496.2,
        "checks": {
          "hasEffectiveTextCompression": false
        },
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "estimatedSavingsBytes": 1313541,
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "estimatedSavingsBytes": 891965,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "estimatedSavingsBytes": 126680.2,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "estimatedSavingsBytes": 63759,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "estimatedSavingsBytes": 7551,
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings."
          }
        ],
        "recommendations": [
          {
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
          },
          {
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
          },
          {
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 7.37 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 4269231.2,
        "totalEstimatedBlockingMs": 9260,
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable text compression",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat.",
            "estimatedSavingsBytes": 1313541,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,283 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-text-compression"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 1195544,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,168 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 891965,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 871 KiB",
            "urgency": "high",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unused-javascript",
            "title": "Remove unused JavaScript",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code.",
            "estimatedSavingsBytes": 546355,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 534 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-javascript"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9260,
            "displayValue": "Est savings of 9,260 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 126680.2,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 124 KiB",
            "urgency": "medium",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "offscreen-images",
            "title": "Lazy-load offscreen images",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed.",
            "estimatedSavingsBytes": 117124,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 114 KiB",
            "urgency": "medium",
            "sourceAuditId": "offscreen-images"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 63759,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 62 KiB",
            "urgency": "medium",
            "sourceAuditId": "unminified-javascript"
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss.",
            "estimatedSavingsBytes": 7551,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-optimized-images"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 6712,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-responsive-images"
          }
        ],
        "recommendations": [
          {
            "title": "Enable text compression",
            "urgency": "high",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat. Estimated byte savings: 1.25 MB."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "high",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 1.14 MB."
          },
          {
            "title": "Minify CSS",
            "urgency": "high",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 871.06 KB."
          },
          {
            "title": "Remove unused JavaScript",
            "urgency": "high",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code. Estimated byte savings: 533.55 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 9260 ms."
          },
          {
            "title": "Serve images in next-gen formats",
            "urgency": "medium",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 123.71 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 4,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 2,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "2 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1921680
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.83 MB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.83 MB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 30,
        "urgency": "high",
        "transferBytes": 2232443,
        "css": {
          "unusedBytes": 1195544,
          "ratio": 0.5355317022651866,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 546355,
          "duplicatedBytes": 0,
          "ratio": 0.24473413206966538,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "high",
            "estimatedSavingsBytes": 1195544,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          },
          {
            "area": "javascript",
            "title": "Remove unused JavaScript and feature bundles",
            "urgency": "high",
            "estimatedSavingsBytes": 546355,
            "strategy": "Drop unused packages and feature code, or move them behind route-level or interaction-triggered imports.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 35,
        "urgency": "high",
        "transferBytes": 2232443,
        "estimatedDeferrableBytes": 1859023,
        "renderBlockingMs": 9260,
        "breakdown": {
          "offscreenImageSavings": 117124,
          "unusedJavascriptSavings": 546355,
          "unusedCssSavings": 1195544
        },
        "candidates": [
          {
            "title": "Lazy-load offscreen images",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 117124,
            "strategy": "Load below-the-fold images only when they approach the viewport.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Defer non-critical JavaScript",
            "area": "javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 546355,
            "strategy": "Split bundles and load feature code on interaction or route transition.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1195544,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9260,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy stylesheet from administracion.gob.es",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from administracion.gob.es",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 254418,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from administracion.gob.es",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.googletagmanager.com",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 145384,
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 34,
        "urgency": "medium",
        "providerCount": 1,
        "requestCount": 2,
        "transferBytes": 290073,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290073,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "medium",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "medium",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          }
        ]
      },
      "redundancy": {
        "score": 68,
        "urgency": "high",
        "transferBytes": 2232443,
        "estimatedRedundantBytes": 1741899,
        "redundancyRatio": 0.780265834334852,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 1195544,
            "displayValue": "Est savings of 1,168 KiB"
          },
          {
            "auditId": "unused-javascript",
            "title": "Reduce unused JavaScript",
            "savingsBytes": 546355,
            "displayValue": "Est savings of 534 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "high",
            "estimatedSavingsBytes": 1195544,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce unused javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 546355,
            "auditId": "unused-javascript",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Enable and verify text compression",
            "urgency": "medium",
            "estimatedSavingsBytes": 1313541,
            "auditId": "uses-text-compression",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 46,
        "urgency": "high",
        "totalTransferBytes": 2232443,
        "heavyRequestCount": 6,
        "heavyBytes": 1925291,
        "heavyRatio": 0.862414404309539,
        "heavyRequests": [
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "transferSize": 1177193,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "transferSize": 254418,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "transferSize": 159823,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "transferSize": 145384,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-4YNNM3J1E0&cx=c&gtm=4e63p1",
            "transferSize": 144689,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/libs/jquery.mCustomScrollbar.css",
            "transferSize": 43784,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 1220977
          },
          {
            "resourceType": "script",
            "count": 3,
            "transferBytes": 544491
          },
          {
            "resourceType": "image",
            "count": 1,
            "transferBytes": 159823
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "administracion.gob.es",
            "count": 4,
            "transferBytes": 1635218
          },
          {
            "domain": "www.googletagmanager.com",
            "count": 2,
            "transferBytes": 290073
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Lazy-load offscreen images and media galleries",
            "urgency": "medium",
            "estimatedSavingsBytes": 117124,
            "strategy": "Load imagery only when it enters the viewport or when a user opens the relevant section.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Split JavaScript by route or interaction",
            "urgency": "high",
            "estimatedSavingsBytes": 546355,
            "strategy": "Move non-critical bundles behind route-level or event-driven imports so they are only fetched on demand.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy stylesheet asset from administracion.gob.es",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "strategy": "Split this stylesheet so component-specific CSS is delivered only when the component is rendered.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 254418,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0,
          "displayValue": "12.5 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 12.5 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": 0.01,
          "displayValue": "14.0 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- Current value: 14.0 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": 0,
          "displayValue": "Est savings of 534 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- Current value: Est savings of 534 KiB\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 1,168 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 1,168 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 9,260 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 9,260 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": 0,
          "displayValue": "Est savings of 1,283 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- Current value: Est savings of 1,283 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 124 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 124 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 7 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- Current value: Est savings of 7 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 114 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- Current value: Est savings of 114 KiB\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/familia/genero",
      "status": "ok",
      "finalUrl": "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/familia/genero",
      "performanceScore": 0.56,
      "bestPracticesScore": 0.79,
      "transferBytes": 2205322,
      "co2Grams": 0.8448178392108001,
      "greenWeb": {
        "page": {
          "hostname": "administracion.gob.es",
          "checked": true,
          "status": "not-green",
          "green": false,
          "hostedBy": null,
          "hostedByWebsite": null,
          "listedProvider": null,
          "partner": null,
          "modified": "2026-03-29T13:38:28.588564",
          "supportingDocuments": [],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/administracion.gob.es",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290066,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "not-green",
          "externalOriginCount": 1,
          "greenCount": 1,
          "notGreenCount": 1,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 70,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/buscador/buscadorsimple.htm|input|text|q|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "q",
            "formContext": "form|get|/buscador/buscadorsimple.htm",
            "hasLabel": false,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 70,
              "urgency": "high",
              "issues": [
                "Missing associated label",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add a programmatic label using <label>, aria-label, or aria-labelledby.",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "Missing associated label",
            "urgency": "high",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 35,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": false,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Reconocimiento de género - Ciudadanía y vida familiar - Ciudadanos - Tus derechos y obligaciones en la UE - Tu espacio europeo - Punto de Acceso General",
          "lang": "es",
          "charset": "",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Conoce qué es la rectificación registral de la mención del sexo, quién y dónde se puede solicitar y los requisitos que se deben cumplir",
          "robots": "all",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 32,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 44,
          "tabletSmallTapTargets": 77,
          "fixedWidthOffenders": 1,
          "oversizedMedia": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 399,
            "viewportHeight": 864,
            "contentWidth": 399,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 1,
            "smallTapTargets": 44,
            "oversizedMedia": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 829,
            "viewportHeight": 1193,
            "contentWidth": 829,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 77,
            "oversizedMedia": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 44 small targets on mobile and 77 on tablet."
          },
          {
            "title": "Refactor fixed-width components",
            "urgency": "medium",
            "detail": "1 element(s) exceeded viewport width in tested layouts; use responsive component constraints."
          }
        ]
      },
      "securityLight": {
        "score": 31,
        "urgency": "medium",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": false,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "connection": "Keep-Alive",
            "content-encoding": "gzip",
            "content-type": "text/html;charset=UTF-8",
            "date": "Mon, 30 Mar 2026 00:50:22 GMT",
            "keep-alive": "timeout=15, max=500",
            "referrer-policy": "origin-when-cross-origin,strict-origin-when-cross-origin",
            "server": "Microsoft-IIS/5.0",
            "set-cookie": "VISITOR=returning; Path=/pag_Home/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/familia; HttpOnly; Secure; SameSite=None\nTS01a8e1d0=01d9c3d318e789ba678d5f510903cba2d9619d84e41bf1c929f6e26ea46b7f1e54ca58bc9b6bd16f994b3bb7e0caef0d22a250a0b899a9ab291180f115e665a2bf2fcf1bc0e29453f044b15ea9f8e63f306898e32b; Path=/; HttpOnly; Secure; SameSite=None\nTS01ee8f2a=01d9c3d3184a405cd3209da19940a565bc108c3bee1bf1c929f6e26ea46b7f1e54ca58bc9b6bd16f994b3bb7e0caef0d22a250a0b899a9ab291180f115e665a2bf2fcf1bc034dc00a2765a0836aef4d17e99fe02dafe861cb9915ad5f03fac2b6c7c99009f; path=/pag_Home/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/familia; HttpOnly; Secure; SameSite=None",
            "strict-transport-security": "max-age=63072000; preload",
            "transfer-encoding": "chunked",
            "vary": "Accept-Encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1;mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add a Content-Security-Policy header",
            "urgency": "high",
            "detail": "Add an appropriate CSP to reduce script injection and resource loading risk."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 30,
        "urgency": "medium",
        "origin": "https://administracion.gob.es",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://administracion.gob.es/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/favicon.ico",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 2403496.2,
        "checks": {
          "hasEffectiveTextCompression": false
        },
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "estimatedSavingsBytes": 1313541,
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "estimatedSavingsBytes": 891965,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "estimatedSavingsBytes": 126680.2,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "estimatedSavingsBytes": 63759,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "estimatedSavingsBytes": 7551,
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings."
          }
        ],
        "recommendations": [
          {
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
          },
          {
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
          },
          {
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 7.37 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 4254909.2,
        "totalEstimatedBlockingMs": 9239,
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable text compression",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat.",
            "estimatedSavingsBytes": 1313541,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,283 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-text-compression"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 1196408,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,168 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 891965,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 871 KiB",
            "urgency": "high",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unused-javascript",
            "title": "Remove unused JavaScript",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code.",
            "estimatedSavingsBytes": 546315,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 534 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-javascript"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9239,
            "displayValue": "Est savings of 9,240 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 126680.2,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 124 KiB",
            "urgency": "medium",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "offscreen-images",
            "title": "Lazy-load offscreen images",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed.",
            "estimatedSavingsBytes": 101978,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 100 KiB",
            "urgency": "medium",
            "sourceAuditId": "offscreen-images"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 63759,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 62 KiB",
            "urgency": "medium",
            "sourceAuditId": "unminified-javascript"
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss.",
            "estimatedSavingsBytes": 7551,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-optimized-images"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 6712,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-responsive-images"
          }
        ],
        "recommendations": [
          {
            "title": "Enable text compression",
            "urgency": "high",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat. Estimated byte savings: 1.25 MB."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "high",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 1.14 MB."
          },
          {
            "title": "Minify CSS",
            "urgency": "high",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 871.06 KB."
          },
          {
            "title": "Remove unused JavaScript",
            "urgency": "high",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code. Estimated byte savings: 533.51 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 9239 ms."
          },
          {
            "title": "Serve images in next-gen formats",
            "urgency": "medium",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 123.71 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1897040
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.81 MB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.81 MB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 30,
        "urgency": "high",
        "transferBytes": 2205322,
        "css": {
          "unusedBytes": 1196408,
          "ratio": 0.5425094385309719,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 546315,
          "duplicatedBytes": 0,
          "ratio": 0.2477257289411705,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "high",
            "estimatedSavingsBytes": 1196408,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          },
          {
            "area": "javascript",
            "title": "Remove unused JavaScript and feature bundles",
            "urgency": "high",
            "estimatedSavingsBytes": 546315,
            "strategy": "Drop unused packages and feature code, or move them behind route-level or interaction-triggered imports.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 35,
        "urgency": "high",
        "transferBytes": 2205322,
        "estimatedDeferrableBytes": 1844701,
        "renderBlockingMs": 9239,
        "breakdown": {
          "offscreenImageSavings": 101978,
          "unusedJavascriptSavings": 546315,
          "unusedCssSavings": 1196408
        },
        "candidates": [
          {
            "title": "Lazy-load offscreen images",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 101978,
            "strategy": "Load below-the-fold images only when they approach the viewport.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Defer non-critical JavaScript",
            "area": "javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 546315,
            "strategy": "Split bundles and load feature code on interaction or route transition.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1196408,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9239,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy stylesheet from administracion.gob.es",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from administracion.gob.es",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 254411,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from administracion.gob.es",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 159817,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.googletagmanager.com",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 145381,
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 34,
        "urgency": "medium",
        "providerCount": 1,
        "requestCount": 2,
        "transferBytes": 290066,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290066,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "medium",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "medium",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          }
        ]
      },
      "redundancy": {
        "score": 66,
        "urgency": "high",
        "transferBytes": 2205322,
        "estimatedRedundantBytes": 1742723,
        "redundancyRatio": 0.7902351674721424,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 1196408,
            "displayValue": "Est savings of 1,168 KiB"
          },
          {
            "auditId": "unused-javascript",
            "title": "Reduce unused JavaScript",
            "savingsBytes": 546315,
            "displayValue": "Est savings of 534 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "high",
            "estimatedSavingsBytes": 1196408,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce unused javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 546315,
            "auditId": "unused-javascript",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Enable and verify text compression",
            "urgency": "medium",
            "estimatedSavingsBytes": 1313541,
            "auditId": "uses-text-compression",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 47,
        "urgency": "high",
        "totalTransferBytes": 2205322,
        "heavyRequestCount": 6,
        "heavyBytes": 1925271,
        "heavyRatio": 0.8730112881474905,
        "heavyRequests": [
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "transferSize": 1177193,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "transferSize": 254411,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "transferSize": 159817,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "transferSize": 145381,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-4YNNM3J1E0&cx=c&gtm=4e63p1h1",
            "transferSize": 144685,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/libs/jquery.mCustomScrollbar.css",
            "transferSize": 43784,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 1220977
          },
          {
            "resourceType": "script",
            "count": 3,
            "transferBytes": 544477
          },
          {
            "resourceType": "image",
            "count": 1,
            "transferBytes": 159817
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "administracion.gob.es",
            "count": 4,
            "transferBytes": 1635205
          },
          {
            "domain": "www.googletagmanager.com",
            "count": 2,
            "transferBytes": 290066
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Lazy-load offscreen images and media galleries",
            "urgency": "medium",
            "estimatedSavingsBytes": 101978,
            "strategy": "Load imagery only when it enters the viewport or when a user opens the relevant section.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Split JavaScript by route or interaction",
            "urgency": "high",
            "estimatedSavingsBytes": 546315,
            "strategy": "Move non-critical bundles behind route-level or event-driven imports so they are only fetched on demand.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy stylesheet asset from administracion.gob.es",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "strategy": "Split this stylesheet so component-specific CSS is delivered only when the component is rendered.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 254411,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 159817,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0,
          "displayValue": "11.9 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 11.9 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": 0.06,
          "displayValue": "10.8 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- Current value: 10.8 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": 0,
          "displayValue": "Est savings of 534 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- Current value: Est savings of 534 KiB\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 1,168 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 1,168 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 9,240 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 9,240 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": 0,
          "displayValue": "Est savings of 1,283 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- Current value: Est savings of 1,283 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 124 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 124 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 7 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- Current value: Est savings of 7 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 100 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- Current value: Est savings of 100 KiB\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://administracion.gob.es/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/empresas/financiacion/nacional/registros-notariado",
      "status": "ok",
      "finalUrl": "https://administracion.gob.es/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/empresas/financiacion/nacional/registros-notariado",
      "performanceScore": 0.55,
      "bestPracticesScore": 0.79,
      "transferBytes": 2190216,
      "co2Grams": 0.8390310115824,
      "greenWeb": {
        "page": {
          "hostname": "administracion.gob.es",
          "checked": true,
          "status": "not-green",
          "green": false,
          "hostedBy": null,
          "hostedByWebsite": null,
          "listedProvider": null,
          "partner": null,
          "modified": "2026-03-29T13:38:28.588564",
          "supportingDocuments": [],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/administracion.gob.es",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290073,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "not-green",
          "externalOriginCount": 1,
          "greenCount": 1,
          "notGreenCount": 1,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 70,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/buscador/buscadorsimple.htm|input|text|q|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "q",
            "formContext": "form|get|/buscador/buscadorsimple.htm",
            "hasLabel": false,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 70,
              "urgency": "high",
              "issues": [
                "Missing associated label",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add a programmatic label using <label>, aria-label, or aria-labelledby.",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "Missing associated label",
            "urgency": "high",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 35,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": false,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "National financing: Registers and notaries - National funding - Funding - Business - Your rights and obligations in the EU - Tu espacio europeo - Punto de Acceso General",
          "lang": "en",
          "charset": "",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Find out about self-financing, external sources of finance and the institutions that finance companies.",
          "robots": "all",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 30,
          "tabletSmallTapTargets": 59,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 399,
            "viewportHeight": 864,
            "contentWidth": 399,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 30,
            "oversizedMedia": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 829,
            "viewportHeight": 1193,
            "contentWidth": 829,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 59,
            "oversizedMedia": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 30 small targets on mobile and 59 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 31,
        "urgency": "medium",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": false,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "connection": "Keep-Alive",
            "content-encoding": "gzip",
            "content-type": "text/html;charset=UTF-8",
            "date": "Mon, 30 Mar 2026 00:50:46 GMT",
            "keep-alive": "timeout=15, max=500",
            "referrer-policy": "origin-when-cross-origin,strict-origin-when-cross-origin",
            "server": "Microsoft-IIS/5.0",
            "set-cookie": "VISITOR=returning; Path=/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/empresas; HttpOnly; Secure; SameSite=None\nTS01a8e1d0=01d9c3d318e7a8c865cff5bfbfde2a5a70a79c504eb3b65702792a2422d6dea9a14fbb8c75c755b532d4af8734a0a9da2940d3f8020813121b758b0f755a937321c48a41049cc9ec1af9ede690ff0b835cb184dc63; Path=/; HttpOnly; Secure; SameSite=None\nTS01e4c404=01d9c3d3183d0ab5e35f0a4d3b0e06f02e6973180380529b1b9ba56384d07a19b66567890ae44783a444bdd5d48d6a967bacc4b9ad4bff902aea9909935fb9326af3d6d004f98a4d48eaff3a52021502918d296d1fe81761193e34385adc30c5a064c0078b; path=/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/empresas; HttpOnly; Secure; SameSite=None",
            "strict-transport-security": "max-age=63072000; preload",
            "transfer-encoding": "chunked",
            "vary": "Accept-Encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1;mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add a Content-Security-Policy header",
            "urgency": "high",
            "detail": "Add an appropriate CSP to reduce script injection and resource loading risk."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 30,
        "urgency": "medium",
        "origin": "https://administracion.gob.es",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://administracion.gob.es/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/favicon.ico",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 2403496.2,
        "checks": {
          "hasEffectiveTextCompression": false
        },
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "estimatedSavingsBytes": 1313541,
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "estimatedSavingsBytes": 891965,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "estimatedSavingsBytes": 126680.2,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "estimatedSavingsBytes": 63759,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "estimatedSavingsBytes": 7551,
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings."
          }
        ],
        "recommendations": [
          {
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
          },
          {
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
          },
          {
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 7.37 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 4246548.2,
        "totalEstimatedBlockingMs": 9305,
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable text compression",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat.",
            "estimatedSavingsBytes": 1313541,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,283 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-text-compression"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 1197876,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,170 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 891965,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 871 KiB",
            "urgency": "high",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unused-javascript",
            "title": "Remove unused JavaScript",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code.",
            "estimatedSavingsBytes": 547349,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 535 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-javascript"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9305,
            "displayValue": "Est savings of 9,310 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 126680.2,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 124 KiB",
            "urgency": "medium",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "offscreen-images",
            "title": "Lazy-load offscreen images",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed.",
            "estimatedSavingsBytes": 91115,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 89 KiB",
            "urgency": "medium",
            "sourceAuditId": "offscreen-images"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 63759,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 62 KiB",
            "urgency": "medium",
            "sourceAuditId": "unminified-javascript"
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss.",
            "estimatedSavingsBytes": 7551,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-optimized-images"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 6712,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-responsive-images"
          }
        ],
        "recommendations": [
          {
            "title": "Enable text compression",
            "urgency": "high",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat. Estimated byte savings: 1.25 MB."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "high",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 1.14 MB."
          },
          {
            "title": "Minify CSS",
            "urgency": "high",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 871.06 KB."
          },
          {
            "title": "Remove unused JavaScript",
            "urgency": "high",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code. Estimated byte savings: 534.52 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 9305 ms."
          },
          {
            "title": "Serve images in next-gen formats",
            "urgency": "medium",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 123.71 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1882625
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.80 MB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.80 MB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 30,
        "urgency": "high",
        "transferBytes": 2190216,
        "css": {
          "unusedBytes": 1197876,
          "ratio": 0.5469213995331967,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 547349,
          "duplicatedBytes": 0,
          "ratio": 0.24990640192565483,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "high",
            "estimatedSavingsBytes": 1197876,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          },
          {
            "area": "javascript",
            "title": "Remove unused JavaScript and feature bundles",
            "urgency": "high",
            "estimatedSavingsBytes": 547349,
            "strategy": "Drop unused packages and feature code, or move them behind route-level or interaction-triggered imports.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 35,
        "urgency": "high",
        "transferBytes": 2190216,
        "estimatedDeferrableBytes": 1836340,
        "renderBlockingMs": 9305,
        "breakdown": {
          "offscreenImageSavings": 91115,
          "unusedJavascriptSavings": 547349,
          "unusedCssSavings": 1197876
        },
        "candidates": [
          {
            "title": "Lazy-load offscreen images",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 91115,
            "strategy": "Load below-the-fold images only when they approach the viewport.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Defer non-critical JavaScript",
            "area": "javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 547349,
            "strategy": "Split bundles and load feature code on interaction or route transition.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1197876,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9305,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy stylesheet from administracion.gob.es",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from administracion.gob.es",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 254418,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from administracion.gob.es",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 160060,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.googletagmanager.com",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 145384,
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 34,
        "urgency": "medium",
        "providerCount": 1,
        "requestCount": 2,
        "transferBytes": 290073,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290073,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "medium",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "medium",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          }
        ]
      },
      "redundancy": {
        "score": 66,
        "urgency": "high",
        "transferBytes": 2190216,
        "estimatedRedundantBytes": 1745225,
        "redundancyRatio": 0.7968278014588516,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 1197876,
            "displayValue": "Est savings of 1,170 KiB"
          },
          {
            "auditId": "unused-javascript",
            "title": "Reduce unused JavaScript",
            "savingsBytes": 547349,
            "displayValue": "Est savings of 535 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "high",
            "estimatedSavingsBytes": 1197876,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce unused javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 547349,
            "auditId": "unused-javascript",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Enable and verify text compression",
            "urgency": "medium",
            "estimatedSavingsBytes": 1313541,
            "auditId": "uses-text-compression",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 47,
        "urgency": "high",
        "totalTransferBytes": 2190216,
        "heavyRequestCount": 6,
        "heavyBytes": 1925528,
        "heavyRatio": 0.8791498190132845,
        "heavyRequests": [
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "transferSize": 1177193,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "transferSize": 254418,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "transferSize": 160060,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "transferSize": 145384,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-4YNNM3J1E0&cx=c&gtm=4e63p1",
            "transferSize": 144689,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/libs/jquery.mCustomScrollbar.css",
            "transferSize": 43784,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 1220977
          },
          {
            "resourceType": "script",
            "count": 3,
            "transferBytes": 544491
          },
          {
            "resourceType": "image",
            "count": 1,
            "transferBytes": 160060
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "administracion.gob.es",
            "count": 4,
            "transferBytes": 1635455
          },
          {
            "domain": "www.googletagmanager.com",
            "count": 2,
            "transferBytes": 290073
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Lazy-load offscreen images and media galleries",
            "urgency": "medium",
            "estimatedSavingsBytes": 91115,
            "strategy": "Load imagery only when it enters the viewport or when a user opens the relevant section.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Split JavaScript by route or interaction",
            "urgency": "high",
            "estimatedSavingsBytes": 547349,
            "strategy": "Move non-critical bundles behind route-level or event-driven imports so they are only fetched on demand.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy stylesheet asset from administracion.gob.es",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "strategy": "Split this stylesheet so component-specific CSS is delivered only when the component is rendered.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 254418,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 160060,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0,
          "displayValue": "11.9 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 11.9 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": 0.01,
          "displayValue": "14.4 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- Current value: 14.4 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": 0,
          "displayValue": "Est savings of 535 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- Current value: Est savings of 535 KiB\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 1,170 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 1,170 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 9,310 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 9,310 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": 0,
          "displayValue": "Est savings of 1,283 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- Current value: Est savings of 1,283 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 124 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 124 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 7 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- Current value: Est savings of 7 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 89 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- Current value: Est savings of 89 KiB\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://administracion.gob.es/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/empresas/inicio-gestion-cierre/seguro-credito",
      "status": "ok",
      "finalUrl": "https://administracion.gob.es/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/empresas/inicio-gestion-cierre/seguro-credito",
      "performanceScore": 0.56,
      "bestPracticesScore": 0.79,
      "transferBytes": 2189506,
      "co2Grams": 0.8387590237884001,
      "greenWeb": {
        "page": {
          "hostname": "administracion.gob.es",
          "checked": true,
          "status": "not-green",
          "green": false,
          "hostedBy": null,
          "hostedByWebsite": null,
          "listedProvider": null,
          "partner": null,
          "modified": "2026-03-29T13:38:28.588564",
          "supportingDocuments": [],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/administracion.gob.es",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290073,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "not-green",
          "externalOriginCount": 1,
          "greenCount": 1,
          "notGreenCount": 1,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 70,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/buscador/buscadorsimple.htm|input|text|q|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "q",
            "formContext": "form|get|/buscador/buscadorsimple.htm",
            "hasLabel": false,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 70,
              "urgency": "high",
              "issues": [
                "Missing associated label",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add a programmatic label using <label>, aria-label, or aria-labelledby.",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "Missing associated label",
            "urgency": "high",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 25,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": true,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": false,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Seguro de crédito - Puesta en marcha, gestión y cierre de una empresa - Empresas - Tus derechos y obligaciones en la UE - Tu espacio europeo - Punto de Acceso General",
          "lang": "eu",
          "charset": "",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Conoce qué es el seguro de crédito y la cobertura de los principales riesgos",
          "robots": "all",
          "canonical": "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/empresas/inicio-gestion-cierre/seguro-credito",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 32,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 48,
          "tabletSmallTapTargets": 79,
          "fixedWidthOffenders": 1,
          "oversizedMedia": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 399,
            "viewportHeight": 864,
            "contentWidth": 399,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 1,
            "smallTapTargets": 48,
            "oversizedMedia": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 829,
            "viewportHeight": 1193,
            "contentWidth": 829,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 79,
            "oversizedMedia": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 48 small targets on mobile and 79 on tablet."
          },
          {
            "title": "Refactor fixed-width components",
            "urgency": "medium",
            "detail": "1 element(s) exceeded viewport width in tested layouts; use responsive component constraints."
          }
        ]
      },
      "securityLight": {
        "score": 31,
        "urgency": "medium",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": false,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "connection": "Keep-Alive",
            "content-encoding": "gzip",
            "content-type": "text/html;charset=UTF-8",
            "date": "Mon, 30 Mar 2026 00:51:08 GMT",
            "keep-alive": "timeout=15, max=500",
            "referrer-policy": "origin-when-cross-origin,strict-origin-when-cross-origin",
            "server": "Microsoft-IIS/5.0",
            "set-cookie": "VISITOR=returning; Path=/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/empresas; HttpOnly; Secure; SameSite=None\nTS01a8e1d0=01d9c3d318e7a8c865cff5bfbfde2a5a70a79c504eb3b65702792a2422d6dea9a14fbb8c75c755b532d4af8734a0a9da2940d3f8020813121b758b0f755a937321c48a41049cc9ec1af9ede690ff0b835cb184dc63; Path=/; HttpOnly; Secure; SameSite=None\nTS01298ba9=01d9c3d3183d0ab5e35f0a4d3b0e06f02e6973180380529b1b9ba56384d07a19b66567890ae44783a444bdd5d48d6a967bacc4b9ad4bff902aea9909935fb9326af3d6d004f98a4d48eaff3a52021502918d296d1fe81761193e34385adc30c5a064c0078b; path=/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/empresas; HttpOnly; Secure; SameSite=None",
            "strict-transport-security": "max-age=63072000; preload",
            "transfer-encoding": "chunked",
            "vary": "Accept-Encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1;mode=block",
            "traceresponse": "00-7baf889dbce727cbf6a588aecc70c9fd-22f9f254472f554d-01",
            "x-dt-tracestate": "acd5d8fe-344161ca@dt"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add a Content-Security-Policy header",
            "urgency": "high",
            "detail": "Add an appropriate CSP to reduce script injection and resource loading risk."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 30,
        "urgency": "medium",
        "origin": "https://administracion.gob.es",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://administracion.gob.es/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/favicon.ico",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 2403496.2,
        "checks": {
          "hasEffectiveTextCompression": false
        },
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "estimatedSavingsBytes": 1313541,
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "estimatedSavingsBytes": 891965,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "estimatedSavingsBytes": 126680.2,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "estimatedSavingsBytes": 63759,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "estimatedSavingsBytes": 7551,
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings."
          }
        ],
        "recommendations": [
          {
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
          },
          {
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
          },
          {
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 7.37 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 4246609.2,
        "totalEstimatedBlockingMs": 9514,
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable text compression",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat.",
            "estimatedSavingsBytes": 1313541,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,283 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-text-compression"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 1197937,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,170 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 891965,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 871 KiB",
            "urgency": "high",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unused-javascript",
            "title": "Remove unused JavaScript",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code.",
            "estimatedSavingsBytes": 547349,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 535 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-javascript"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9514,
            "displayValue": "Est savings of 9,510 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 126680.2,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 124 KiB",
            "urgency": "medium",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "offscreen-images",
            "title": "Lazy-load offscreen images",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed.",
            "estimatedSavingsBytes": 91115,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 89 KiB",
            "urgency": "medium",
            "sourceAuditId": "offscreen-images"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 63759,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 62 KiB",
            "urgency": "medium",
            "sourceAuditId": "unminified-javascript"
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss.",
            "estimatedSavingsBytes": 7551,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-optimized-images"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 6712,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-responsive-images"
          }
        ],
        "recommendations": [
          {
            "title": "Enable text compression",
            "urgency": "high",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat. Estimated byte savings: 1.25 MB."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "high",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 1.14 MB."
          },
          {
            "title": "Minify CSS",
            "urgency": "high",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 871.06 KB."
          },
          {
            "title": "Remove unused JavaScript",
            "urgency": "high",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code. Estimated byte savings: 534.52 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 9514 ms."
          },
          {
            "title": "Serve images in next-gen formats",
            "urgency": "medium",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 123.71 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1881907
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.79 MB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.79 MB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 30,
        "urgency": "high",
        "transferBytes": 2189506,
        "css": {
          "unusedBytes": 1197937,
          "ratio": 0.5471266121216384,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 547349,
          "duplicatedBytes": 0,
          "ratio": 0.2499874400892256,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "high",
            "estimatedSavingsBytes": 1197937,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          },
          {
            "area": "javascript",
            "title": "Remove unused JavaScript and feature bundles",
            "urgency": "high",
            "estimatedSavingsBytes": 547349,
            "strategy": "Drop unused packages and feature code, or move them behind route-level or interaction-triggered imports.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 35,
        "urgency": "high",
        "transferBytes": 2189506,
        "estimatedDeferrableBytes": 1836401,
        "renderBlockingMs": 9514,
        "breakdown": {
          "offscreenImageSavings": 91115,
          "unusedJavascriptSavings": 547349,
          "unusedCssSavings": 1197937
        },
        "candidates": [
          {
            "title": "Lazy-load offscreen images",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 91115,
            "strategy": "Load below-the-fold images only when they approach the viewport.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Defer non-critical JavaScript",
            "area": "javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 547349,
            "strategy": "Split bundles and load feature code on interaction or route transition.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1197937,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9514,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy stylesheet from administracion.gob.es",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from administracion.gob.es",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 254418,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from administracion.gob.es",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.googletagmanager.com",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 145384,
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 34,
        "urgency": "medium",
        "providerCount": 1,
        "requestCount": 2,
        "transferBytes": 290073,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290073,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "medium",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "medium",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          }
        ]
      },
      "redundancy": {
        "score": 69,
        "urgency": "high",
        "transferBytes": 2189506,
        "estimatedRedundantBytes": 1745286,
        "redundancyRatio": 0.797114052210864,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 1197937,
            "displayValue": "Est savings of 1,170 KiB"
          },
          {
            "auditId": "unused-javascript",
            "title": "Reduce unused JavaScript",
            "savingsBytes": 547349,
            "displayValue": "Est savings of 535 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "high",
            "estimatedSavingsBytes": 1197937,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce unused javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 547349,
            "auditId": "unused-javascript",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Enable and verify text compression",
            "urgency": "medium",
            "estimatedSavingsBytes": 1313541,
            "auditId": "uses-text-compression",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 47,
        "urgency": "high",
        "totalTransferBytes": 2189506,
        "heavyRequestCount": 6,
        "heavyBytes": 1925291,
        "heavyRatio": 0.8793266608997646,
        "heavyRequests": [
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "transferSize": 1177193,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "transferSize": 254418,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "transferSize": 159823,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "transferSize": 145384,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-4YNNM3J1E0&cx=c&gtm=4e63p1",
            "transferSize": 144689,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/libs/jquery.mCustomScrollbar.css",
            "transferSize": 43784,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 1220977
          },
          {
            "resourceType": "script",
            "count": 3,
            "transferBytes": 544491
          },
          {
            "resourceType": "image",
            "count": 1,
            "transferBytes": 159823
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "administracion.gob.es",
            "count": 4,
            "transferBytes": 1635218
          },
          {
            "domain": "www.googletagmanager.com",
            "count": 2,
            "transferBytes": 290073
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Lazy-load offscreen images and media galleries",
            "urgency": "medium",
            "estimatedSavingsBytes": 91115,
            "strategy": "Load imagery only when it enters the viewport or when a user opens the relevant section.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Split JavaScript by route or interaction",
            "urgency": "high",
            "estimatedSavingsBytes": 547349,
            "strategy": "Move non-critical bundles behind route-level or event-driven imports so they are only fetched on demand.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy stylesheet asset from administracion.gob.es",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "strategy": "Split this stylesheet so component-specific CSS is delivered only when the component is rendered.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 254418,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0,
          "displayValue": "12.1 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 12.1 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": 0.06,
          "displayValue": "11.1 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- Current value: 11.1 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": 0,
          "displayValue": "Est savings of 535 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- Current value: Est savings of 535 KiB\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 1,170 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 1,170 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 9,510 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 9,510 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": 0,
          "displayValue": "Est savings of 1,283 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- Current value: Est savings of 1,283 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 124 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 124 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 7 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- Current value: Est savings of 7 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 89 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- Current value: Est savings of 89 KiB\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://administracion.gob.es/pag_Home/Tramites/Relacionarte-electronicamente.html",
      "status": "ok",
      "finalUrl": "https://administracion.gob.es/pag_Home/Tramites/Relacionarte-electronicamente.html",
      "performanceScore": 0.56,
      "bestPracticesScore": 0.79,
      "transferBytes": 2042279,
      "co2Grams": 0.7823590985106001,
      "greenWeb": {
        "page": {
          "hostname": "administracion.gob.es",
          "checked": true,
          "status": "not-green",
          "green": false,
          "hostedBy": null,
          "hostedByWebsite": null,
          "listedProvider": null,
          "partner": null,
          "modified": "2026-03-29T13:38:28.588564",
          "supportingDocuments": [],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/administracion.gob.es",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 145384,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "not-green",
          "externalOriginCount": 1,
          "greenCount": 1,
          "notGreenCount": 1,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 70,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/buscador/buscadorsimple.htm|input|text|q|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "q",
            "formContext": "form|get|/buscador/buscadorsimple.htm",
            "hasLabel": false,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 70,
              "urgency": "high",
              "issues": [
                "Missing associated label",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add a programmatic label using <label>, aria-label, or aria-labelledby.",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "Missing associated label",
            "urgency": "high",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 45,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": false,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": false,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Relacionarte electrónicamente con la Administración - Trámites y Servicios Electrónicos - Punto de Acceso General",
          "lang": "es",
          "charset": "",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "",
          "robots": "all",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Add meta description",
            "urgency": "medium",
            "detail": "Provide a concise description to improve machine interpretation and preview quality."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 34,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 38,
          "tabletSmallTapTargets": 72,
          "fixedWidthOffenders": 2,
          "oversizedMedia": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 399,
            "viewportHeight": 864,
            "contentWidth": 399,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 2,
            "smallTapTargets": 38,
            "oversizedMedia": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 829,
            "viewportHeight": 1193,
            "contentWidth": 829,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 72,
            "oversizedMedia": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 38 small targets on mobile and 72 on tablet."
          },
          {
            "title": "Refactor fixed-width components",
            "urgency": "medium",
            "detail": "2 element(s) exceeded viewport width in tested layouts; use responsive component constraints."
          }
        ]
      },
      "securityLight": {
        "score": 31,
        "urgency": "medium",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": false,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "connection": "Keep-Alive",
            "content-encoding": "gzip",
            "content-length": "12502",
            "content-type": "text/html;charset=UTF-8",
            "date": "Mon, 30 Mar 2026 00:51:29 GMT",
            "keep-alive": "timeout=15, max=500",
            "referrer-policy": "origin-when-cross-origin,strict-origin-when-cross-origin",
            "server": "Microsoft-IIS/5.0",
            "set-cookie": "VISITOR=returning; Path=/pag_Home/Tramites/Relacionarte-electronicamente.html; HttpOnly; Secure; SameSite=None\nTS01a8e1d0=01d9c3d318e7a8c865cff5bfbfde2a5a70a79c504eb3b65702792a2422d6dea9a14fbb8c75c755b532d4af8734a0a9da2940d3f8020813121b758b0f755a937321c48a41049cc9ec1af9ede690ff0b835cb184dc63; Path=/; HttpOnly; Secure; SameSite=None\nTS015f1482=01d9c3d31828de2967dea8f8955bbad00ab1584e04b3b65702792a2422d6dea9a14fbb8c75c755b532d4af8734a0a9da2940d3f8020813121b758b0f755a937321c48a41047ac2011571db8d34163e713b0d4ab367598e2707989a705bf4de72efa4e1be1d; path=/pag_Home/Tramites/Relacionarte-electronicamente.html; HttpOnly; Secure; SameSite=None",
            "strict-transport-security": "max-age=63072000; preload",
            "vary": "Accept-Encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1;mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add a Content-Security-Policy header",
            "urgency": "high",
            "detail": "Add an appropriate CSP to reduce script injection and resource loading risk."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 30,
        "urgency": "medium",
        "origin": "https://administracion.gob.es",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://administracion.gob.es/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/favicon.ico",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 2403496.2,
        "checks": {
          "hasEffectiveTextCompression": false
        },
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "estimatedSavingsBytes": 1313541,
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "estimatedSavingsBytes": 891965,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "estimatedSavingsBytes": 126680.2,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "estimatedSavingsBytes": 63759,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "estimatedSavingsBytes": 7551,
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings."
          }
        ],
        "recommendations": [
          {
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
          },
          {
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
          },
          {
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 7.37 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 4161667.2,
        "totalEstimatedBlockingMs": 8985,
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable text compression",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat.",
            "estimatedSavingsBytes": 1313541,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,283 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-text-compression"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 1199118,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,171 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 891965,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 871 KiB",
            "urgency": "high",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unused-javascript",
            "title": "Remove unused JavaScript",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code.",
            "estimatedSavingsBytes": 482838,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 472 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-javascript"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 8985,
            "displayValue": "Est savings of 8,990 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 126680.2,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 124 KiB",
            "urgency": "medium",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "offscreen-images",
            "title": "Lazy-load offscreen images",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed.",
            "estimatedSavingsBytes": 76215,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 74 KiB",
            "urgency": "medium",
            "sourceAuditId": "offscreen-images"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 63759,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 62 KiB",
            "urgency": "medium",
            "sourceAuditId": "unminified-javascript"
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss.",
            "estimatedSavingsBytes": 7551,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-optimized-images"
          }
        ],
        "recommendations": [
          {
            "title": "Enable text compression",
            "urgency": "high",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat. Estimated byte savings: 1.25 MB."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "high",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 1.14 MB."
          },
          {
            "title": "Minify CSS",
            "urgency": "high",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 871.06 KB."
          },
          {
            "title": "Remove unused JavaScript",
            "urgency": "high",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code. Estimated byte savings: 471.52 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 8985 ms."
          },
          {
            "title": "Serve images in next-gen formats",
            "urgency": "medium",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 123.71 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1881499
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.79 MB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.79 MB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 31,
        "urgency": "high",
        "transferBytes": 2042279,
        "css": {
          "unusedBytes": 1199118,
          "ratio": 0.5871470058694234,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 482838,
          "duplicatedBytes": 0,
          "ratio": 0.23642117457996678,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "high",
            "estimatedSavingsBytes": 1199118,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          },
          {
            "area": "javascript",
            "title": "Remove unused JavaScript and feature bundles",
            "urgency": "high",
            "estimatedSavingsBytes": 482838,
            "strategy": "Drop unused packages and feature code, or move them behind route-level or interaction-triggered imports.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 35,
        "urgency": "high",
        "transferBytes": 2042279,
        "estimatedDeferrableBytes": 1758171,
        "renderBlockingMs": 8985,
        "breakdown": {
          "offscreenImageSavings": 76215,
          "unusedJavascriptSavings": 482838,
          "unusedCssSavings": 1199118
        },
        "candidates": [
          {
            "title": "Lazy-load offscreen images",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 76215,
            "strategy": "Load below-the-fold images only when they approach the viewport.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Defer non-critical JavaScript",
            "area": "javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 482838,
            "strategy": "Split bundles and load feature code on interaction or route transition.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1199118,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 8985,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy stylesheet from administracion.gob.es",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from administracion.gob.es",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 254418,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from administracion.gob.es",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 159817,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.googletagmanager.com",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 145384,
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 17,
        "urgency": "low",
        "providerCount": 1,
        "requestCount": 1,
        "transferBytes": 145384,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 145384,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "low",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          }
        ]
      },
      "redundancy": {
        "score": 68,
        "urgency": "high",
        "transferBytes": 2042279,
        "estimatedRedundantBytes": 1681956,
        "redundancyRatio": 0.8235681804493901,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 1199118,
            "displayValue": "Est savings of 1,171 KiB"
          },
          {
            "auditId": "unused-javascript",
            "title": "Reduce unused JavaScript",
            "savingsBytes": 482838,
            "displayValue": "Est savings of 472 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "high",
            "estimatedSavingsBytes": 1199118,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce unused javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 482838,
            "auditId": "unused-javascript",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Enable and verify text compression",
            "urgency": "medium",
            "estimatedSavingsBytes": 1313541,
            "auditId": "uses-text-compression",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 45,
        "urgency": "high",
        "totalTransferBytes": 2042279,
        "heavyRequestCount": 5,
        "heavyBytes": 1780596,
        "heavyRatio": 0.8718671640848288,
        "heavyRequests": [
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "transferSize": 1177193,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "transferSize": 254418,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "transferSize": 159817,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "transferSize": 145384,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/libs/jquery.mCustomScrollbar.css",
            "transferSize": 43784,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 1220977
          },
          {
            "resourceType": "script",
            "count": 2,
            "transferBytes": 399802
          },
          {
            "resourceType": "image",
            "count": 1,
            "transferBytes": 159817
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "administracion.gob.es",
            "count": 4,
            "transferBytes": 1635212
          },
          {
            "domain": "www.googletagmanager.com",
            "count": 1,
            "transferBytes": 145384
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Lazy-load offscreen images and media galleries",
            "urgency": "medium",
            "estimatedSavingsBytes": 76215,
            "strategy": "Load imagery only when it enters the viewport or when a user opens the relevant section.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Split JavaScript by route or interaction",
            "urgency": "high",
            "estimatedSavingsBytes": 482838,
            "strategy": "Move non-critical bundles behind route-level or event-driven imports so they are only fetched on demand.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy stylesheet asset from administracion.gob.es",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "strategy": "Split this stylesheet so component-specific CSS is delivered only when the component is rendered.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 254418,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 159817,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0,
          "displayValue": "11.5 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 11.5 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": 0.07,
          "displayValue": "10.6 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- Current value: 10.6 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": 0,
          "displayValue": "Est savings of 472 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- Current value: Est savings of 472 KiB\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 1,171 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 1,171 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 8,990 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 8,990 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": 0,
          "displayValue": "Est savings of 1,283 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- Current value: Est savings of 1,283 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 124 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 124 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 7 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- Current value: Est savings of 7 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 74 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- Current value: Est savings of 74 KiB\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://administracion.gob.es/pag_Home/gl/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/vehiculos/compraventa/matriculacion",
      "status": "ok",
      "finalUrl": "https://administracion.gob.es/pag_Home/gl/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/vehiculos/compraventa/matriculacion",
      "performanceScore": 0.56,
      "bestPracticesScore": 0.79,
      "transferBytes": 2188807,
      "co2Grams": 0.8384912498898003,
      "greenWeb": {
        "page": {
          "hostname": "administracion.gob.es",
          "checked": true,
          "status": "not-green",
          "green": false,
          "hostedBy": null,
          "hostedByWebsite": null,
          "listedProvider": null,
          "partner": null,
          "modified": "2026-03-29T13:38:28.588564",
          "supportingDocuments": [],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/administracion.gob.es",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290073,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "not-green",
          "externalOriginCount": 1,
          "greenCount": 1,
          "notGreenCount": 1,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 70,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/buscador/buscadorsimple.htm|input|text|q|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "q",
            "formContext": "form|get|/buscador/buscadorsimple.htm",
            "hasLabel": false,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 70,
              "urgency": "high",
              "issues": [
                "Missing associated label",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add a programmatic label using <label>, aria-label, or aria-labelledby.",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "Missing associated label",
            "urgency": "high",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 25,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": true,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": false,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Compraventa de vehículos: Transferencia - Compraventa de vehículos: Paso a paso - Vehículos - Ciudadanos - Tus derechos y obligaciones en la UE - Tu espacio europeo - Punto de Acceso General",
          "lang": "gl",
          "charset": "",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Conoce qué debes saber para realizar una compraventa de un vehículo y la transferencia de vehículos para exportación paso a paso.",
          "robots": "all",
          "canonical": "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/vehiculos/compraventa/matriculacion",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 32,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 23,
          "tabletSmallTapTargets": 57,
          "fixedWidthOffenders": 1,
          "oversizedMedia": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 399,
            "viewportHeight": 864,
            "contentWidth": 399,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 1,
            "smallTapTargets": 23,
            "oversizedMedia": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 829,
            "viewportHeight": 1193,
            "contentWidth": 829,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 57,
            "oversizedMedia": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 23 small targets on mobile and 57 on tablet."
          },
          {
            "title": "Refactor fixed-width components",
            "urgency": "medium",
            "detail": "1 element(s) exceeded viewport width in tested layouts; use responsive component constraints."
          }
        ]
      },
      "securityLight": {
        "score": 31,
        "urgency": "medium",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": false,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "connection": "Keep-Alive",
            "content-encoding": "gzip",
            "content-length": "12280",
            "content-type": "text/html;charset=UTF-8",
            "date": "Mon, 30 Mar 2026 00:51:51 GMT",
            "keep-alive": "timeout=15, max=500",
            "referrer-policy": "origin-when-cross-origin,strict-origin-when-cross-origin",
            "server": "Microsoft-IIS/5.0",
            "set-cookie": "VISITOR=returning; Path=/pag_Home/gl/Tu-espacio-europeo/derechos-obligaciones/ciudadanos; HttpOnly; Secure; SameSite=None\nTS01a8e1d0=01d9c3d318e7a8c865cff5bfbfde2a5a70a79c504eb3b65702792a2422d6dea9a14fbb8c75c755b532d4af8734a0a9da2940d3f8020813121b758b0f755a937321c48a41049cc9ec1af9ede690ff0b835cb184dc63; Path=/; HttpOnly; Secure; SameSite=None\nTS0146228d=01d9c3d31875eb4ee065abf109a5ef141663ea9e5662999d88da62791f603954b0657e3ad206abe0e840a1f31af532847905d0382b90b7a84781f287b0f8ea376c270e95758790e5f992ab8a462f1118463bf9b8565956db104bfe20987b3f54c98e7c3998; path=/pag_Home/gl/Tu-espacio-europeo/derechos-obligaciones/ciudadanos; HttpOnly; Secure; SameSite=None",
            "strict-transport-security": "max-age=63072000; preload",
            "vary": "Accept-Encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1;mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add a Content-Security-Policy header",
            "urgency": "high",
            "detail": "Add an appropriate CSP to reduce script injection and resource loading risk."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 30,
        "urgency": "medium",
        "origin": "https://administracion.gob.es",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://administracion.gob.es/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/favicon.ico",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 2403496.2,
        "checks": {
          "hasEffectiveTextCompression": false
        },
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "estimatedSavingsBytes": 1313541,
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "estimatedSavingsBytes": 891965,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "estimatedSavingsBytes": 126680.2,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "estimatedSavingsBytes": 63759,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "estimatedSavingsBytes": 7551,
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings."
          }
        ],
        "recommendations": [
          {
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
          },
          {
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
          },
          {
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 7.37 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 4214313.2,
        "totalEstimatedBlockingMs": 9065,
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable text compression",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat.",
            "estimatedSavingsBytes": 1313541,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,283 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-text-compression"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 1197234,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,169 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 891965,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 871 KiB",
            "urgency": "high",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unused-javascript",
            "title": "Remove unused JavaScript",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code.",
            "estimatedSavingsBytes": 531450,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 519 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-javascript"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9065,
            "displayValue": "Est savings of 9,070 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 126680.2,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 124 KiB",
            "urgency": "medium",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "offscreen-images",
            "title": "Lazy-load offscreen images",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed.",
            "estimatedSavingsBytes": 75421,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 74 KiB",
            "urgency": "medium",
            "sourceAuditId": "offscreen-images"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 63759,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 62 KiB",
            "urgency": "medium",
            "sourceAuditId": "unminified-javascript"
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss.",
            "estimatedSavingsBytes": 7551,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-optimized-images"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 6712,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-responsive-images"
          }
        ],
        "recommendations": [
          {
            "title": "Enable text compression",
            "urgency": "high",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat. Estimated byte savings: 1.25 MB."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "high",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 1.14 MB."
          },
          {
            "title": "Minify CSS",
            "urgency": "high",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 871.06 KB."
          },
          {
            "title": "Remove unused JavaScript",
            "urgency": "high",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code. Estimated byte savings: 518.99 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 9065 ms."
          },
          {
            "title": "Serve images in next-gen formats",
            "urgency": "medium",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 123.71 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1883462
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.80 MB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.80 MB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 30,
        "urgency": "high",
        "transferBytes": 2188807,
        "css": {
          "unusedBytes": 1197234,
          "ratio": 0.5469801585978115,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 531450,
          "duplicatedBytes": 0,
          "ratio": 0.24280349980605873,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "high",
            "estimatedSavingsBytes": 1197234,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          },
          {
            "area": "javascript",
            "title": "Remove unused JavaScript and feature bundles",
            "urgency": "high",
            "estimatedSavingsBytes": 531450,
            "strategy": "Drop unused packages and feature code, or move them behind route-level or interaction-triggered imports.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 34,
        "urgency": "high",
        "transferBytes": 2188807,
        "estimatedDeferrableBytes": 1804105,
        "renderBlockingMs": 9065,
        "breakdown": {
          "offscreenImageSavings": 75421,
          "unusedJavascriptSavings": 531450,
          "unusedCssSavings": 1197234
        },
        "candidates": [
          {
            "title": "Lazy-load offscreen images",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 75421,
            "strategy": "Load below-the-fold images only when they approach the viewport.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Defer non-critical JavaScript",
            "area": "javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 531450,
            "strategy": "Split bundles and load feature code on interaction or route transition.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1197234,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9065,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy stylesheet from administracion.gob.es",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from administracion.gob.es",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 254418,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from administracion.gob.es",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.googletagmanager.com",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 145384,
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 34,
        "urgency": "medium",
        "providerCount": 1,
        "requestCount": 2,
        "transferBytes": 290073,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290073,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "medium",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "medium",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          }
        ]
      },
      "redundancy": {
        "score": 66,
        "urgency": "high",
        "transferBytes": 2188807,
        "estimatedRedundantBytes": 1728684,
        "redundancyRatio": 0.7897836584038702,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 1197234,
            "displayValue": "Est savings of 1,169 KiB"
          },
          {
            "auditId": "unused-javascript",
            "title": "Reduce unused JavaScript",
            "savingsBytes": 531450,
            "displayValue": "Est savings of 519 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "high",
            "estimatedSavingsBytes": 1197234,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce unused javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 531450,
            "auditId": "unused-javascript",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Enable and verify text compression",
            "urgency": "medium",
            "estimatedSavingsBytes": 1313541,
            "auditId": "uses-text-compression",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 47,
        "urgency": "high",
        "totalTransferBytes": 2188807,
        "heavyRequestCount": 6,
        "heavyBytes": 1925291,
        "heavyRatio": 0.8796074756705365,
        "heavyRequests": [
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "transferSize": 1177193,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "transferSize": 254418,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "transferSize": 159823,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "transferSize": 145384,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-4YNNM3J1E0&cx=c&gtm=4e63p1",
            "transferSize": 144689,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/libs/jquery.mCustomScrollbar.css",
            "transferSize": 43784,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 1220977
          },
          {
            "resourceType": "script",
            "count": 3,
            "transferBytes": 544491
          },
          {
            "resourceType": "image",
            "count": 1,
            "transferBytes": 159823
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "administracion.gob.es",
            "count": 4,
            "transferBytes": 1635218
          },
          {
            "domain": "www.googletagmanager.com",
            "count": 2,
            "transferBytes": 290073
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Lazy-load offscreen images and media galleries",
            "urgency": "medium",
            "estimatedSavingsBytes": 75421,
            "strategy": "Load imagery only when it enters the viewport or when a user opens the relevant section.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Split JavaScript by route or interaction",
            "urgency": "high",
            "estimatedSavingsBytes": 531450,
            "strategy": "Move non-critical bundles behind route-level or event-driven imports so they are only fetched on demand.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy stylesheet asset from administracion.gob.es",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "strategy": "Split this stylesheet so component-specific CSS is delivered only when the component is rendered.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 254418,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0,
          "displayValue": "11.7 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 11.7 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": 0.05,
          "displayValue": "11.5 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- Current value: 11.5 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": 0,
          "displayValue": "Est savings of 519 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- Current value: Est savings of 519 KiB\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 1,169 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 1,169 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 9,070 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 9,070 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": 0,
          "displayValue": "Est savings of 1,283 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- Current value: Est savings of 1,283 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 124 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 124 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 7 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- Current value: Est savings of 7 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 74 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- Current value: Est savings of 74 KiB\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/residencia/elecciones/europeas",
      "status": "ok",
      "finalUrl": "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/residencia/elecciones/europeas",
      "performanceScore": 0.55,
      "bestPracticesScore": 0.79,
      "transferBytes": 2191305,
      "co2Grams": 0.8394481872270002,
      "greenWeb": {
        "page": {
          "hostname": "administracion.gob.es",
          "checked": true,
          "status": "not-green",
          "green": false,
          "hostedBy": null,
          "hostedByWebsite": null,
          "listedProvider": null,
          "partner": null,
          "modified": "2026-03-29T13:38:28.588564",
          "supportingDocuments": [],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/administracion.gob.es",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290073,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "not-green",
          "externalOriginCount": 1,
          "greenCount": 1,
          "notGreenCount": 1,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 70,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/buscador/buscadorsimple.htm|input|text|q|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "q",
            "formContext": "form|get|/buscador/buscadorsimple.htm",
            "hasLabel": false,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 70,
              "urgency": "high",
              "issues": [
                "Missing associated label",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add a programmatic label using <label>, aria-label, or aria-labelledby.",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "Missing associated label",
            "urgency": "high",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 35,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": false,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Elecciones europeas - Elecciones - Residencia - Ciudadanos - Tus derechos y obligaciones en la UE - Tu espacio europeo - Punto de Acceso General",
          "lang": "es",
          "charset": "",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Conoce los distintos supuestos para votar en las elecciones europeas en España y los requisitos para los ciudadanos de la UE que quieran presentarse como candidatos",
          "robots": "all",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 42,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 32,
          "tabletSmallTapTargets": 64,
          "fixedWidthOffenders": 6,
          "oversizedMedia": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 399,
            "viewportHeight": 864,
            "contentWidth": 399,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 3,
            "smallTapTargets": 32,
            "oversizedMedia": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 829,
            "viewportHeight": 1193,
            "contentWidth": 829,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 3,
            "smallTapTargets": 64,
            "oversizedMedia": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 32 small targets on mobile and 64 on tablet."
          },
          {
            "title": "Refactor fixed-width components",
            "urgency": "medium",
            "detail": "6 element(s) exceeded viewport width in tested layouts; use responsive component constraints."
          }
        ]
      },
      "securityLight": {
        "score": 31,
        "urgency": "medium",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": false,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "connection": "Keep-Alive",
            "content-encoding": "gzip",
            "content-length": "14687",
            "content-type": "text/html;charset=UTF-8",
            "date": "Mon, 30 Mar 2026 00:52:16 GMT",
            "keep-alive": "timeout=15, max=500",
            "referrer-policy": "origin-when-cross-origin,strict-origin-when-cross-origin",
            "server": "Microsoft-IIS/5.0",
            "set-cookie": "VISITOR=returning; Path=/pag_Home/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/residencia; HttpOnly; Secure; SameSite=None\nTS01a8e1d0=01d9c3d318e7a8c865cff5bfbfde2a5a70a79c504eb3b65702792a2422d6dea9a14fbb8c75c755b532d4af8734a0a9da2940d3f8020813121b758b0f755a937321c48a41049cc9ec1af9ede690ff0b835cb184dc63; Path=/; HttpOnly; Secure; SameSite=None\nTS017d1333=01d9c3d3184ffb337ca739d0053cfb0ca74d51f49f6307f3292d4b0537431a42ad8b1305344a33bb9d19322e073c125f3da6a1aa230810e74a9b77ed3f2d939eabdc5aec9eee8d4d4d58752025c871d7705ea4f3b024710e1af3826721524d5281cedab948; path=/pag_Home/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/residencia; HttpOnly; Secure; SameSite=None",
            "strict-transport-security": "max-age=63072000; preload",
            "vary": "Accept-Encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1;mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add a Content-Security-Policy header",
            "urgency": "high",
            "detail": "Add an appropriate CSP to reduce script injection and resource loading risk."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 30,
        "urgency": "medium",
        "origin": "https://administracion.gob.es",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://administracion.gob.es/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/favicon.ico",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 2403496.2,
        "checks": {
          "hasEffectiveTextCompression": false
        },
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "estimatedSavingsBytes": 1313541,
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "estimatedSavingsBytes": 891965,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "estimatedSavingsBytes": 126680.2,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "estimatedSavingsBytes": 63759,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "estimatedSavingsBytes": 7551,
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings."
          }
        ],
        "recommendations": [
          {
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
          },
          {
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
          },
          {
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 7.37 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 4230086.2,
        "totalEstimatedBlockingMs": 9288,
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable text compression",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat.",
            "estimatedSavingsBytes": 1313541,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,283 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-text-compression"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 1197234,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,169 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 891965,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 871 KiB",
            "urgency": "high",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unused-javascript",
            "title": "Remove unused JavaScript",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code.",
            "estimatedSavingsBytes": 531529,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 519 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-javascript"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9288,
            "displayValue": "Est savings of 9,290 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 126680.2,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 124 KiB",
            "urgency": "medium",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "offscreen-images",
            "title": "Lazy-load offscreen images",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed.",
            "estimatedSavingsBytes": 91115,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 89 KiB",
            "urgency": "medium",
            "sourceAuditId": "offscreen-images"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 63759,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 62 KiB",
            "urgency": "medium",
            "sourceAuditId": "unminified-javascript"
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss.",
            "estimatedSavingsBytes": 7551,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-optimized-images"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 6712,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-responsive-images"
          }
        ],
        "recommendations": [
          {
            "title": "Enable text compression",
            "urgency": "high",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat. Estimated byte savings: 1.25 MB."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "high",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 1.14 MB."
          },
          {
            "title": "Minify CSS",
            "urgency": "high",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 871.06 KB."
          },
          {
            "title": "Remove unused JavaScript",
            "urgency": "high",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code. Estimated byte savings: 519.07 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 9288 ms."
          },
          {
            "title": "Serve images in next-gen formats",
            "urgency": "medium",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 123.71 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1883578
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.80 MB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.80 MB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 30,
        "urgency": "high",
        "transferBytes": 2191305,
        "css": {
          "unusedBytes": 1197234,
          "ratio": 0.5463566231081479,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 531529,
          "duplicatedBytes": 0,
          "ratio": 0.24256276511028815,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "high",
            "estimatedSavingsBytes": 1197234,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          },
          {
            "area": "javascript",
            "title": "Remove unused JavaScript and feature bundles",
            "urgency": "high",
            "estimatedSavingsBytes": 531529,
            "strategy": "Drop unused packages and feature code, or move them behind route-level or interaction-triggered imports.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 35,
        "urgency": "high",
        "transferBytes": 2191305,
        "estimatedDeferrableBytes": 1819878,
        "renderBlockingMs": 9288,
        "breakdown": {
          "offscreenImageSavings": 91115,
          "unusedJavascriptSavings": 531529,
          "unusedCssSavings": 1197234
        },
        "candidates": [
          {
            "title": "Lazy-load offscreen images",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 91115,
            "strategy": "Load below-the-fold images only when they approach the viewport.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Defer non-critical JavaScript",
            "area": "javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 531529,
            "strategy": "Split bundles and load feature code on interaction or route transition.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1197234,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9288,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy stylesheet from administracion.gob.es",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from administracion.gob.es",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 254418,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from administracion.gob.es",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 159817,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.googletagmanager.com",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 145384,
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 34,
        "urgency": "medium",
        "providerCount": 1,
        "requestCount": 2,
        "transferBytes": 290073,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290073,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "medium",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "medium",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          }
        ]
      },
      "redundancy": {
        "score": 66,
        "urgency": "high",
        "transferBytes": 2191305,
        "estimatedRedundantBytes": 1728763,
        "redundancyRatio": 0.788919388218436,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 1197234,
            "displayValue": "Est savings of 1,169 KiB"
          },
          {
            "auditId": "unused-javascript",
            "title": "Reduce unused JavaScript",
            "savingsBytes": 531529,
            "displayValue": "Est savings of 519 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "high",
            "estimatedSavingsBytes": 1197234,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce unused javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 531529,
            "auditId": "unused-javascript",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Enable and verify text compression",
            "urgency": "medium",
            "estimatedSavingsBytes": 1313541,
            "auditId": "uses-text-compression",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 47,
        "urgency": "high",
        "totalTransferBytes": 2191305,
        "heavyRequestCount": 6,
        "heavyBytes": 1925285,
        "heavyRatio": 0.8786020202573352,
        "heavyRequests": [
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "transferSize": 1177193,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "transferSize": 254418,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "transferSize": 159817,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "transferSize": 145384,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-4YNNM3J1E0&cx=c&gtm=4e63p1",
            "transferSize": 144689,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/libs/jquery.mCustomScrollbar.css",
            "transferSize": 43784,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 1220977
          },
          {
            "resourceType": "script",
            "count": 3,
            "transferBytes": 544491
          },
          {
            "resourceType": "image",
            "count": 1,
            "transferBytes": 159817
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "administracion.gob.es",
            "count": 4,
            "transferBytes": 1635212
          },
          {
            "domain": "www.googletagmanager.com",
            "count": 2,
            "transferBytes": 290073
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Lazy-load offscreen images and media galleries",
            "urgency": "medium",
            "estimatedSavingsBytes": 91115,
            "strategy": "Load imagery only when it enters the viewport or when a user opens the relevant section.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Split JavaScript by route or interaction",
            "urgency": "high",
            "estimatedSavingsBytes": 531529,
            "strategy": "Move non-critical bundles behind route-level or event-driven imports so they are only fetched on demand.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy stylesheet asset from administracion.gob.es",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "strategy": "Split this stylesheet so component-specific CSS is delivered only when the component is rendered.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 254418,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 159817,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0,
          "displayValue": "11.9 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 11.9 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": 0.01,
          "displayValue": "15.2 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- Current value: 15.2 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": 0,
          "displayValue": "Est savings of 519 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- Current value: Est savings of 519 KiB\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 1,169 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 1,169 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 9,290 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 9,290 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": 0,
          "displayValue": "Est savings of 1,283 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- Current value: Est savings of 1,283 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 124 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 124 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 7 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- Current value: Est savings of 7 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 89 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- Current value: Est savings of 89 KiB\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://administracion.gob.es/pag_Home/ayudas/gestionSuscripciones.html",
      "status": "ok",
      "finalUrl": "https://administracion.gob.es/pag_Home/ayudas/gestionSuscripciones.html",
      "performanceScore": 0.55,
      "bestPracticesScore": 0.79,
      "transferBytes": 2097501,
      "co2Grams": 0.8035136195813999,
      "greenWeb": {
        "page": {
          "hostname": "administracion.gob.es",
          "checked": true,
          "status": "not-green",
          "green": false,
          "hostedBy": null,
          "hostedByWebsite": null,
          "listedProvider": null,
          "partner": null,
          "modified": "2026-03-29T13:38:28.588564",
          "supportingDocuments": [],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/administracion.gob.es",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 145384,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "not-green",
          "externalOriginCount": 1,
          "greenCount": 1,
          "notGreenCount": 1,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 70,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/buscador/buscadorsimple.htm|input|text|q|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "q",
            "formContext": "form|get|/buscador/buscadorsimple.htm",
            "hasLabel": false,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 70,
              "urgency": "high",
              "issues": [
                "Missing associated label",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add a programmatic label using <label>, aria-label, or aria-labelledby.",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "Missing associated label",
            "urgency": "high",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 45,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": false,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": false,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Suscripciones de ayudas, subvenciones, becas y premios - Ayudas - Punto de Acceso General",
          "lang": "es",
          "charset": "",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "",
          "robots": "all",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Add meta description",
            "urgency": "medium",
            "detail": "Provide a concise description to improve machine interpretation and preview quality."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 22,
          "tabletSmallTapTargets": 55,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 399,
            "viewportHeight": 864,
            "contentWidth": 399,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 22,
            "oversizedMedia": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 829,
            "viewportHeight": 1193,
            "contentWidth": 829,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 55,
            "oversizedMedia": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 22 small targets on mobile and 55 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 31,
        "urgency": "medium",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": false,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "connection": "Keep-Alive",
            "content-encoding": "gzip",
            "content-type": "text/html;charset=UTF-8",
            "date": "Mon, 30 Mar 2026 00:52:39 GMT",
            "keep-alive": "timeout=15, max=500",
            "referrer-policy": "origin-when-cross-origin,strict-origin-when-cross-origin",
            "server": "Microsoft-IIS/5.0",
            "set-cookie": "VISITOR=returning; Path=/pag_Home/ayudas/gestionSuscripciones.html; HttpOnly; Secure; SameSite=None\nTS01a8e1d0=01d9c3d318e7a8c865cff5bfbfde2a5a70a79c504eb3b65702792a2422d6dea9a14fbb8c75c755b532d4af8734a0a9da2940d3f8020813121b758b0f755a937321c48a41049cc9ec1af9ede690ff0b835cb184dc63; Path=/; HttpOnly; Secure; SameSite=None\nTS01c1e295=01d9c3d31828de2967dea8f8955bbad00ab1584e04b3b65702792a2422d6dea9a14fbb8c75c755b532d4af8734a0a9da2940d3f8020813121b758b0f755a937321c48a41047ac2011571db8d34163e713b0d4ab367598e2707989a705bf4de72efa4e1be1d; path=/pag_Home/ayudas/gestionSuscripciones.html; HttpOnly; Secure; SameSite=None",
            "strict-transport-security": "max-age=63072000; preload",
            "transfer-encoding": "chunked",
            "vary": "Accept-Encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1;mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add a Content-Security-Policy header",
            "urgency": "high",
            "detail": "Add an appropriate CSP to reduce script injection and resource loading risk."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 30,
        "urgency": "medium",
        "origin": "https://administracion.gob.es",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://administracion.gob.es/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/favicon.ico",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 2436128.1,
        "checks": {
          "hasEffectiveTextCompression": false
        },
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "estimatedSavingsBytes": 1313541,
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "estimatedSavingsBytes": 891965,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "estimatedSavingsBytes": 153963.09999999998,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "estimatedSavingsBytes": 63759,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "estimatedSavingsBytes": 12900,
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings."
          }
        ],
        "recommendations": [
          {
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
          },
          {
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 150.35 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
          },
          {
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 12.60 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 4190743.1,
        "totalEstimatedBlockingMs": 8998,
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable text compression",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat.",
            "estimatedSavingsBytes": 1313541,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,283 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-text-compression"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 1197834,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,170 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 891965,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 871 KiB",
            "urgency": "high",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unused-javascript",
            "title": "Remove unused JavaScript",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code.",
            "estimatedSavingsBytes": 481360,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 470 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-javascript"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 8998,
            "displayValue": "Est savings of 9,000 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 153963.09999999998,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 150 KiB",
            "urgency": "medium",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "offscreen-images",
            "title": "Lazy-load offscreen images",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed.",
            "estimatedSavingsBytes": 75421,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 74 KiB",
            "urgency": "medium",
            "sourceAuditId": "offscreen-images"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 63759,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 62 KiB",
            "urgency": "medium",
            "sourceAuditId": "unminified-javascript"
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss.",
            "estimatedSavingsBytes": 12900,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 13 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-optimized-images"
          }
        ],
        "recommendations": [
          {
            "title": "Enable text compression",
            "urgency": "high",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat. Estimated byte savings: 1.25 MB."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "high",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 1.14 MB."
          },
          {
            "title": "Minify CSS",
            "urgency": "high",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 871.06 KB."
          },
          {
            "title": "Remove unused JavaScript",
            "urgency": "high",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code. Estimated byte savings: 470.08 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 8998 ms."
          },
          {
            "title": "Serve images in next-gen formats",
            "urgency": "medium",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 150.35 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1938100
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.85 MB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.85 MB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 30,
        "urgency": "high",
        "transferBytes": 2097501,
        "css": {
          "unusedBytes": 1197834,
          "ratio": 0.571076724158892,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 481360,
          "duplicatedBytes": 0,
          "ratio": 0.22949214326953837,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "high",
            "estimatedSavingsBytes": 1197834,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          },
          {
            "area": "javascript",
            "title": "Remove unused JavaScript and feature bundles",
            "urgency": "high",
            "estimatedSavingsBytes": 481360,
            "strategy": "Drop unused packages and feature code, or move them behind route-level or interaction-triggered imports.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 35,
        "urgency": "high",
        "transferBytes": 2097501,
        "estimatedDeferrableBytes": 1754615,
        "renderBlockingMs": 8998,
        "breakdown": {
          "offscreenImageSavings": 75421,
          "unusedJavascriptSavings": 481360,
          "unusedCssSavings": 1197834
        },
        "candidates": [
          {
            "title": "Lazy-load offscreen images",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 75421,
            "strategy": "Load below-the-fold images only when they approach the viewport.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Defer non-critical JavaScript",
            "area": "javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 481360,
            "strategy": "Split bundles and load feature code on interaction or route transition.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1197834,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 8998,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy stylesheet from administracion.gob.es",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from administracion.gob.es",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 254418,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from administracion.gob.es",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.googletagmanager.com",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 145384,
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 17,
        "urgency": "low",
        "providerCount": 1,
        "requestCount": 1,
        "transferBytes": 145384,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 1,
            "transferBytes": 145384,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "low",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          }
        ]
      },
      "redundancy": {
        "score": 67,
        "urgency": "high",
        "transferBytes": 2097501,
        "estimatedRedundantBytes": 1679194,
        "redundancyRatio": 0.8005688674284303,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 1197834,
            "displayValue": "Est savings of 1,170 KiB"
          },
          {
            "auditId": "unused-javascript",
            "title": "Reduce unused JavaScript",
            "savingsBytes": 481360,
            "displayValue": "Est savings of 470 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "high",
            "estimatedSavingsBytes": 1197834,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce unused javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 481360,
            "auditId": "unused-javascript",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Enable and verify text compression",
            "urgency": "medium",
            "estimatedSavingsBytes": 1313541,
            "auditId": "uses-text-compression",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 44,
        "urgency": "high",
        "totalTransferBytes": 2097501,
        "heavyRequestCount": 5,
        "heavyBytes": 1780602,
        "heavyRatio": 0.8489159242355546,
        "heavyRequests": [
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "transferSize": 1177193,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "transferSize": 254418,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "transferSize": 159823,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "transferSize": 145384,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/libs/jquery.mCustomScrollbar.css",
            "transferSize": 43784,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 1220977
          },
          {
            "resourceType": "script",
            "count": 2,
            "transferBytes": 399802
          },
          {
            "resourceType": "image",
            "count": 1,
            "transferBytes": 159823
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "administracion.gob.es",
            "count": 4,
            "transferBytes": 1635218
          },
          {
            "domain": "www.googletagmanager.com",
            "count": 1,
            "transferBytes": 145384
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Lazy-load offscreen images and media galleries",
            "urgency": "medium",
            "estimatedSavingsBytes": 75421,
            "strategy": "Load imagery only when it enters the viewport or when a user opens the relevant section.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Split JavaScript by route or interaction",
            "urgency": "high",
            "estimatedSavingsBytes": 481360,
            "strategy": "Move non-critical bundles behind route-level or event-driven imports so they are only fetched on demand.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy stylesheet asset from administracion.gob.es",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "strategy": "Split this stylesheet so component-specific CSS is delivered only when the component is rendered.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 254418,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0,
          "displayValue": "11.9 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 11.9 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": 0.03,
          "displayValue": "12.3 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- Current value: 12.3 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": 0,
          "displayValue": "Est savings of 470 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- Current value: Est savings of 470 KiB\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 1,170 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 1,170 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 9,000 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 9,000 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": 0,
          "displayValue": "Est savings of 1,283 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- Current value: Est savings of 1,283 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 150 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 150 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 13 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- Current value: Est savings of 13 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 74 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- Current value: Est savings of 74 KiB\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://administracion.gob.es/pag_Home/gl/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/trabajo-jubilacion/reconocimiento-cualificaciones/asistencia",
      "status": "ok",
      "finalUrl": "https://administracion.gob.es/pag_Home/gl/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/trabajo-jubilacion/reconocimiento-cualificaciones/asistencia",
      "performanceScore": 0.56,
      "bestPracticesScore": 0.79,
      "transferBytes": 2185848,
      "co2Grams": 0.8373577120272001,
      "greenWeb": {
        "page": {
          "hostname": "administracion.gob.es",
          "checked": true,
          "status": "not-green",
          "green": false,
          "hostedBy": null,
          "hostedByWebsite": null,
          "listedProvider": null,
          "partner": null,
          "modified": "2026-03-29T13:38:28.588564",
          "supportingDocuments": [],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/administracion.gob.es",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290073,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "not-green",
          "externalOriginCount": 1,
          "greenCount": 1,
          "notGreenCount": 1,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 70,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/buscador/buscadorsimple.htm|input|text|q|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "q",
            "formContext": "form|get|/buscador/buscadorsimple.htm",
            "hasLabel": false,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 70,
              "urgency": "high",
              "issues": [
                "Missing associated label",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add a programmatic label using <label>, aria-label, or aria-labelledby.",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "Missing associated label",
            "urgency": "high",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 25,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": true,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": false,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Centro de asistencia nacional para el reconocimiento de cualificaciones profesionales - Reconocimiento de cualificaciones de profesiones reguladas - Trabajo y jubilación - Ciudadanos - Tus derechos y obligaciones en la UE - Tu espacio europeo - Punto de Acceso General",
          "lang": "gl",
          "charset": "",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Te ofrece información y asesoramiento sobre el reconocimiento de cualificaciones profesionales.",
          "robots": "all",
          "canonical": "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/trabajo-jubilacion/reconocimiento-cualificaciones/asistencia",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 32,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 22,
          "tabletSmallTapTargets": 54,
          "fixedWidthOffenders": 1,
          "oversizedMedia": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 399,
            "viewportHeight": 864,
            "contentWidth": 399,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 1,
            "smallTapTargets": 22,
            "oversizedMedia": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 829,
            "viewportHeight": 1193,
            "contentWidth": 829,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 54,
            "oversizedMedia": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 22 small targets on mobile and 54 on tablet."
          },
          {
            "title": "Refactor fixed-width components",
            "urgency": "medium",
            "detail": "1 element(s) exceeded viewport width in tested layouts; use responsive component constraints."
          }
        ]
      },
      "securityLight": {
        "score": 31,
        "urgency": "medium",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": false,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "connection": "Keep-Alive",
            "content-encoding": "gzip",
            "content-length": "10979",
            "content-type": "text/html;charset=UTF-8",
            "date": "Mon, 30 Mar 2026 00:52:59 GMT",
            "keep-alive": "timeout=15, max=500",
            "referrer-policy": "origin-when-cross-origin,strict-origin-when-cross-origin",
            "server": "Microsoft-IIS/5.0",
            "set-cookie": "VISITOR=returning; Path=/pag_Home/gl/Tu-espacio-europeo/derechos-obligaciones/ciudadanos; HttpOnly; Secure; SameSite=None\nTS01a8e1d0=01d9c3d318e7a8c865cff5bfbfde2a5a70a79c504eb3b65702792a2422d6dea9a14fbb8c75c755b532d4af8734a0a9da2940d3f8020813121b758b0f755a937321c48a41049cc9ec1af9ede690ff0b835cb184dc63; Path=/; HttpOnly; Secure; SameSite=None\nTS0146228d=01d9c3d31875eb4ee065abf109a5ef141663ea9e5662999d88da62791f603954b0657e3ad206abe0e840a1f31af532847905d0382b90b7a84781f287b0f8ea376c270e95758790e5f992ab8a462f1118463bf9b8565956db104bfe20987b3f54c98e7c3998; path=/pag_Home/gl/Tu-espacio-europeo/derechos-obligaciones/ciudadanos; HttpOnly; Secure; SameSite=None",
            "strict-transport-security": "max-age=63072000; preload",
            "vary": "Accept-Encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1;mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add a Content-Security-Policy header",
            "urgency": "high",
            "detail": "Add an appropriate CSP to reduce script injection and resource loading risk."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 30,
        "urgency": "medium",
        "origin": "https://administracion.gob.es",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://administracion.gob.es/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/favicon.ico",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 2403496.2,
        "checks": {
          "hasEffectiveTextCompression": false
        },
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "estimatedSavingsBytes": 1313541,
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "estimatedSavingsBytes": 891965,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "estimatedSavingsBytes": 126680.2,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "estimatedSavingsBytes": 63759,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "estimatedSavingsBytes": 7551,
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings."
          }
        ],
        "recommendations": [
          {
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
          },
          {
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
          },
          {
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 7.37 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 4229124.2,
        "totalEstimatedBlockingMs": 8957,
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable text compression",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat.",
            "estimatedSavingsBytes": 1313541,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,283 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-text-compression"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 1197979,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,170 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 891965,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 871 KiB",
            "urgency": "high",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unused-javascript",
            "title": "Remove unused JavaScript",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code.",
            "estimatedSavingsBytes": 545516,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 533 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-javascript"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 8957,
            "displayValue": "Est savings of 8,960 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 126680.2,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 124 KiB",
            "urgency": "medium",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "offscreen-images",
            "title": "Lazy-load offscreen images",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed.",
            "estimatedSavingsBytes": 75421,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 74 KiB",
            "urgency": "medium",
            "sourceAuditId": "offscreen-images"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 63759,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 62 KiB",
            "urgency": "medium",
            "sourceAuditId": "unminified-javascript"
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss.",
            "estimatedSavingsBytes": 7551,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-optimized-images"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 6712,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-responsive-images"
          }
        ],
        "recommendations": [
          {
            "title": "Enable text compression",
            "urgency": "high",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat. Estimated byte savings: 1.25 MB."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "high",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 1.14 MB."
          },
          {
            "title": "Minify CSS",
            "urgency": "high",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 871.06 KB."
          },
          {
            "title": "Remove unused JavaScript",
            "urgency": "high",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code. Estimated byte savings: 532.73 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 8957 ms."
          },
          {
            "title": "Serve images in next-gen formats",
            "urgency": "medium",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 123.71 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1881897
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.79 MB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.79 MB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 30,
        "urgency": "high",
        "transferBytes": 2185848,
        "css": {
          "unusedBytes": 1197979,
          "ratio": 0.5480614388557667,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 545516,
          "duplicatedBytes": 0,
          "ratio": 0.24956721601868018,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "high",
            "estimatedSavingsBytes": 1197979,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          },
          {
            "area": "javascript",
            "title": "Remove unused JavaScript and feature bundles",
            "urgency": "high",
            "estimatedSavingsBytes": 545516,
            "strategy": "Drop unused packages and feature code, or move them behind route-level or interaction-triggered imports.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 35,
        "urgency": "high",
        "transferBytes": 2185848,
        "estimatedDeferrableBytes": 1818916,
        "renderBlockingMs": 8957,
        "breakdown": {
          "offscreenImageSavings": 75421,
          "unusedJavascriptSavings": 545516,
          "unusedCssSavings": 1197979
        },
        "candidates": [
          {
            "title": "Lazy-load offscreen images",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 75421,
            "strategy": "Load below-the-fold images only when they approach the viewport.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Defer non-critical JavaScript",
            "area": "javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 545516,
            "strategy": "Split bundles and load feature code on interaction or route transition.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1197979,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 8957,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy stylesheet from administracion.gob.es",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from administracion.gob.es",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 254417,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from administracion.gob.es",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.googletagmanager.com",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 145384,
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 34,
        "urgency": "medium",
        "providerCount": 1,
        "requestCount": 2,
        "transferBytes": 290073,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290073,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "medium",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "medium",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          }
        ]
      },
      "redundancy": {
        "score": 69,
        "urgency": "high",
        "transferBytes": 2185848,
        "estimatedRedundantBytes": 1743495,
        "redundancyRatio": 0.7976286548744469,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 1197979,
            "displayValue": "Est savings of 1,170 KiB"
          },
          {
            "auditId": "unused-javascript",
            "title": "Reduce unused JavaScript",
            "savingsBytes": 545516,
            "displayValue": "Est savings of 533 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "high",
            "estimatedSavingsBytes": 1197979,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce unused javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 545516,
            "auditId": "unused-javascript",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Enable and verify text compression",
            "urgency": "medium",
            "estimatedSavingsBytes": 1313541,
            "auditId": "uses-text-compression",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 47,
        "urgency": "high",
        "totalTransferBytes": 2185848,
        "heavyRequestCount": 6,
        "heavyBytes": 1925290,
        "heavyRatio": 0.8807977498892878,
        "heavyRequests": [
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "transferSize": 1177193,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "transferSize": 254417,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "transferSize": 159823,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "transferSize": 145384,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-4YNNM3J1E0&cx=c&gtm=4e63p1",
            "transferSize": 144689,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/libs/jquery.mCustomScrollbar.css",
            "transferSize": 43784,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 1220977
          },
          {
            "resourceType": "script",
            "count": 3,
            "transferBytes": 544490
          },
          {
            "resourceType": "image",
            "count": 1,
            "transferBytes": 159823
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "administracion.gob.es",
            "count": 4,
            "transferBytes": 1635217
          },
          {
            "domain": "www.googletagmanager.com",
            "count": 2,
            "transferBytes": 290073
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Lazy-load offscreen images and media galleries",
            "urgency": "medium",
            "estimatedSavingsBytes": 75421,
            "strategy": "Load imagery only when it enters the viewport or when a user opens the relevant section.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Split JavaScript by route or interaction",
            "urgency": "high",
            "estimatedSavingsBytes": 545516,
            "strategy": "Move non-critical bundles behind route-level or event-driven imports so they are only fetched on demand.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy stylesheet asset from administracion.gob.es",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "strategy": "Split this stylesheet so component-specific CSS is delivered only when the component is rendered.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 254417,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0,
          "displayValue": "11.0 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 11.0 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": 0.07,
          "displayValue": "10.6 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- Current value: 10.6 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": 0,
          "displayValue": "Est savings of 533 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- Current value: Est savings of 533 KiB\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 1,170 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 1,170 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 8,960 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 8,960 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": 0,
          "displayValue": "Est savings of 1,283 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- Current value: Est savings of 1,283 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 124 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 124 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 7 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- Current value: Est savings of 7 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 74 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- Current value: Est savings of 74 KiB\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://administracion.gob.es/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/empresas/productos/normas-especificaciones/sector-farmaceutico0",
      "status": "ok",
      "finalUrl": "https://administracion.gob.es/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/empresas/productos/normas-especificaciones/sector-farmaceutico0",
      "performanceScore": 0.56,
      "bestPracticesScore": 0.79,
      "transferBytes": 2188487,
      "co2Grams": 0.8383686638418,
      "greenWeb": {
        "page": {
          "hostname": "administracion.gob.es",
          "checked": true,
          "status": "not-green",
          "green": false,
          "hostedBy": null,
          "hostedByWebsite": null,
          "listedProvider": null,
          "partner": null,
          "modified": "2026-03-29T13:38:28.588564",
          "supportingDocuments": [],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/administracion.gob.es",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290066,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "not-green",
          "externalOriginCount": 1,
          "greenCount": 1,
          "notGreenCount": 1,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 70,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/buscador/buscadorsimple.htm|input|text|q|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "q",
            "formContext": "form|get|/buscador/buscadorsimple.htm",
            "hasLabel": false,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 70,
              "urgency": "high",
              "issues": [
                "Missing associated label",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add a programmatic label using <label>, aria-label, or aria-labelledby.",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "Missing associated label",
            "urgency": "high",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 35,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": false,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Standards and specifications: Pharmaceutical Industry - Product standards, technical specifications and certification - Goods - Business - Your rights and obligations in the EU - Tu espacio europeo - Punto de Acceso General",
          "lang": "en",
          "charset": "",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Information about standards and specifications of medicines and active substances, healthcare products, cosmetics, personal care products and biocides",
          "robots": "all",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 30,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 44,
          "tabletSmallTapTargets": 79,
          "fixedWidthOffenders": 0,
          "oversizedMedia": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 399,
            "viewportHeight": 864,
            "contentWidth": 399,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 44,
            "oversizedMedia": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 829,
            "viewportHeight": 1193,
            "contentWidth": 829,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 79,
            "oversizedMedia": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 44 small targets on mobile and 79 on tablet."
          }
        ]
      },
      "securityLight": {
        "score": 31,
        "urgency": "medium",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": false,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "connection": "Keep-Alive",
            "content-encoding": "gzip",
            "content-type": "text/html;charset=UTF-8",
            "date": "Mon, 30 Mar 2026 00:53:20 GMT",
            "keep-alive": "timeout=15, max=500",
            "referrer-policy": "origin-when-cross-origin,strict-origin-when-cross-origin",
            "server": "Microsoft-IIS/5.0",
            "set-cookie": "VISITOR=returning; Path=/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/empresas; HttpOnly; Secure; SameSite=None\nTS01a8e1d0=01d9c3d318e7a8c865cff5bfbfde2a5a70a79c504eb3b65702792a2422d6dea9a14fbb8c75c755b532d4af8734a0a9da2940d3f8020813121b758b0f755a937321c48a41049cc9ec1af9ede690ff0b835cb184dc63; Path=/; HttpOnly; Secure; SameSite=None\nTS01e4c404=01d9c3d3183d0ab5e35f0a4d3b0e06f02e6973180380529b1b9ba56384d07a19b66567890ae44783a444bdd5d48d6a967bacc4b9ad4bff902aea9909935fb9326af3d6d004f98a4d48eaff3a52021502918d296d1fe81761193e34385adc30c5a064c0078b; path=/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/empresas; HttpOnly; Secure; SameSite=None",
            "strict-transport-security": "max-age=63072000; preload",
            "transfer-encoding": "chunked",
            "vary": "Accept-Encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1;mode=block",
            "traceresponse": "00-78816f048c8b6aad683dd22944b0cdea-f25ca8bb04ae789b-01",
            "x-dt-tracestate": "acd5d8fe-344161ca@dt"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add a Content-Security-Policy header",
            "urgency": "high",
            "detail": "Add an appropriate CSP to reduce script injection and resource loading risk."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 30,
        "urgency": "medium",
        "origin": "https://administracion.gob.es",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://administracion.gob.es/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/favicon.ico",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 2403496.2,
        "checks": {
          "hasEffectiveTextCompression": false
        },
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "estimatedSavingsBytes": 1313541,
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "estimatedSavingsBytes": 891965,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "estimatedSavingsBytes": 126680.2,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "estimatedSavingsBytes": 63759,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "estimatedSavingsBytes": 7551,
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings."
          }
        ],
        "recommendations": [
          {
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
          },
          {
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
          },
          {
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 7.37 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 4245124.2,
        "totalEstimatedBlockingMs": 9349,
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable text compression",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat.",
            "estimatedSavingsBytes": 1313541,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,283 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-text-compression"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 1197896,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,170 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 891965,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 871 KiB",
            "urgency": "high",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unused-javascript",
            "title": "Remove unused JavaScript",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code.",
            "estimatedSavingsBytes": 545905,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 533 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-javascript"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9349,
            "displayValue": "Est savings of 9,350 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 126680.2,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 124 KiB",
            "urgency": "medium",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "offscreen-images",
            "title": "Lazy-load offscreen images",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed.",
            "estimatedSavingsBytes": 91115,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 89 KiB",
            "urgency": "medium",
            "sourceAuditId": "offscreen-images"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 63759,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 62 KiB",
            "urgency": "medium",
            "sourceAuditId": "unminified-javascript"
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss.",
            "estimatedSavingsBytes": 7551,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-optimized-images"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 6712,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-responsive-images"
          }
        ],
        "recommendations": [
          {
            "title": "Enable text compression",
            "urgency": "high",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat. Estimated byte savings: 1.25 MB."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "high",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 1.14 MB."
          },
          {
            "title": "Minify CSS",
            "urgency": "high",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 871.06 KB."
          },
          {
            "title": "Remove unused JavaScript",
            "urgency": "high",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code. Estimated byte savings: 533.11 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 9349 ms."
          },
          {
            "title": "Serve images in next-gen formats",
            "urgency": "medium",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 123.71 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1882027
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.79 MB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.79 MB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 30,
        "urgency": "high",
        "transferBytes": 2188487,
        "css": {
          "unusedBytes": 1197896,
          "ratio": 0.5473626299813524,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 545905,
          "duplicatedBytes": 0,
          "ratio": 0.2494440222857161,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "high",
            "estimatedSavingsBytes": 1197896,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          },
          {
            "area": "javascript",
            "title": "Remove unused JavaScript and feature bundles",
            "urgency": "high",
            "estimatedSavingsBytes": 545905,
            "strategy": "Drop unused packages and feature code, or move them behind route-level or interaction-triggered imports.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 35,
        "urgency": "high",
        "transferBytes": 2188487,
        "estimatedDeferrableBytes": 1834916,
        "renderBlockingMs": 9349,
        "breakdown": {
          "offscreenImageSavings": 91115,
          "unusedJavascriptSavings": 545905,
          "unusedCssSavings": 1197896
        },
        "candidates": [
          {
            "title": "Lazy-load offscreen images",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 91115,
            "strategy": "Load below-the-fold images only when they approach the viewport.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Defer non-critical JavaScript",
            "area": "javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 545905,
            "strategy": "Split bundles and load feature code on interaction or route transition.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1197896,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9349,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy stylesheet from administracion.gob.es",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from administracion.gob.es",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 254418,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from administracion.gob.es",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.googletagmanager.com",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 145381,
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 34,
        "urgency": "medium",
        "providerCount": 1,
        "requestCount": 2,
        "transferBytes": 290066,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290066,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "medium",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "medium",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          }
        ]
      },
      "redundancy": {
        "score": 66,
        "urgency": "high",
        "transferBytes": 2188487,
        "estimatedRedundantBytes": 1743801,
        "redundancyRatio": 0.7968066522670685,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 1197896,
            "displayValue": "Est savings of 1,170 KiB"
          },
          {
            "auditId": "unused-javascript",
            "title": "Reduce unused JavaScript",
            "savingsBytes": 545905,
            "displayValue": "Est savings of 533 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "high",
            "estimatedSavingsBytes": 1197896,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce unused javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 545905,
            "auditId": "unused-javascript",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Enable and verify text compression",
            "urgency": "medium",
            "estimatedSavingsBytes": 1313541,
            "auditId": "uses-text-compression",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 47,
        "urgency": "high",
        "totalTransferBytes": 2188487,
        "heavyRequestCount": 6,
        "heavyBytes": 1925284,
        "heavyRatio": 0.8797328930900663,
        "heavyRequests": [
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "transferSize": 1177193,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "transferSize": 254418,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "transferSize": 159823,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "transferSize": 145381,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-4YNNM3J1E0&cx=c&gtm=4e63p1h1",
            "transferSize": 144685,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/libs/jquery.mCustomScrollbar.css",
            "transferSize": 43784,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 1220977
          },
          {
            "resourceType": "script",
            "count": 3,
            "transferBytes": 544484
          },
          {
            "resourceType": "image",
            "count": 1,
            "transferBytes": 159823
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "administracion.gob.es",
            "count": 4,
            "transferBytes": 1635218
          },
          {
            "domain": "www.googletagmanager.com",
            "count": 2,
            "transferBytes": 290066
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Lazy-load offscreen images and media galleries",
            "urgency": "medium",
            "estimatedSavingsBytes": 91115,
            "strategy": "Load imagery only when it enters the viewport or when a user opens the relevant section.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Split JavaScript by route or interaction",
            "urgency": "high",
            "estimatedSavingsBytes": 545905,
            "strategy": "Move non-critical bundles behind route-level or event-driven imports so they are only fetched on demand.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy stylesheet asset from administracion.gob.es",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "strategy": "Split this stylesheet so component-specific CSS is delivered only when the component is rendered.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 254418,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0,
          "displayValue": "12.0 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 12.0 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": 0.06,
          "displayValue": "10.9 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- Current value: 10.9 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": 0,
          "displayValue": "Est savings of 533 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- Current value: Est savings of 533 KiB\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 1,170 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 1,170 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 9,350 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 9,350 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": 0,
          "displayValue": "Est savings of 1,283 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- Current value: Est savings of 1,283 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 124 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 124 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 7 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- Current value: Est savings of 7 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 89 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- Current value: Est savings of 89 KiB\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://administracion.gob.es/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/empresas/servicios/permisos",
      "status": "ok",
      "finalUrl": "https://administracion.gob.es/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/empresas/servicios/permisos",
      "performanceScore": 0.56,
      "bestPracticesScore": 0.79,
      "transferBytes": 2229302,
      "co2Grams": 0.8540041311827999,
      "greenWeb": {
        "page": {
          "hostname": "administracion.gob.es",
          "checked": true,
          "status": "not-green",
          "green": false,
          "hostedBy": null,
          "hostedByWebsite": null,
          "listedProvider": null,
          "partner": null,
          "modified": "2026-03-29T13:38:28.588564",
          "supportingDocuments": [],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/administracion.gob.es",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290073,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "not-green",
          "externalOriginCount": 1,
          "greenCount": 1,
          "notGreenCount": 1,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 70,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/buscador/buscadorsimple.htm|input|text|q|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "q",
            "formContext": "form|get|/buscador/buscadorsimple.htm",
            "hasLabel": false,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 70,
              "urgency": "high",
              "issues": [
                "Missing associated label",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add a programmatic label using <label>, aria-label, or aria-labelledby.",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "Missing associated label",
            "urgency": "high",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 25,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": true,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": false,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Licencias o permisos para poner en marcha una empresa - Servicios - Empresas - Tus derechos y obligaciones en la UE - Tu espacio europeo - Punto de Acceso General",
          "lang": "eu",
          "charset": "",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Conoce las licencias o permisos y trámites administrativos necesarios para la puesta en marcha de una empresa, asociaciones, organizaciones de asistencia y Ventanilla Única de Servicios",
          "robots": "all",
          "canonical": "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/empresas/servicios/permisos",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 36,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 45,
          "tabletSmallTapTargets": 77,
          "fixedWidthOffenders": 3,
          "oversizedMedia": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 399,
            "viewportHeight": 864,
            "contentWidth": 399,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 3,
            "smallTapTargets": 45,
            "oversizedMedia": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 829,
            "viewportHeight": 1193,
            "contentWidth": 829,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 77,
            "oversizedMedia": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 45 small targets on mobile and 77 on tablet."
          },
          {
            "title": "Refactor fixed-width components",
            "urgency": "medium",
            "detail": "3 element(s) exceeded viewport width in tested layouts; use responsive component constraints."
          }
        ]
      },
      "securityLight": {
        "score": 31,
        "urgency": "medium",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": false,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "connection": "Keep-Alive",
            "content-encoding": "gzip",
            "content-type": "text/html;charset=UTF-8",
            "date": "Mon, 30 Mar 2026 00:53:42 GMT",
            "keep-alive": "timeout=15, max=500",
            "referrer-policy": "origin-when-cross-origin,strict-origin-when-cross-origin",
            "server": "Microsoft-IIS/5.0",
            "set-cookie": "VISITOR=returning; Path=/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/empresas; HttpOnly; Secure; SameSite=None\nTS01a8e1d0=01d9c3d318e7a8c865cff5bfbfde2a5a70a79c504eb3b65702792a2422d6dea9a14fbb8c75c755b532d4af8734a0a9da2940d3f8020813121b758b0f755a937321c48a41049cc9ec1af9ede690ff0b835cb184dc63; Path=/; HttpOnly; Secure; SameSite=None\nTS01298ba9=01d9c3d3183d0ab5e35f0a4d3b0e06f02e6973180380529b1b9ba56384d07a19b66567890ae44783a444bdd5d48d6a967bacc4b9ad4bff902aea9909935fb9326af3d6d004f98a4d48eaff3a52021502918d296d1fe81761193e34385adc30c5a064c0078b; path=/pag_Home/eu/Tu-espacio-europeo/derechos-obligaciones/empresas; HttpOnly; Secure; SameSite=None",
            "strict-transport-security": "max-age=63072000; preload",
            "transfer-encoding": "chunked",
            "vary": "Accept-Encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1;mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add a Content-Security-Policy header",
            "urgency": "high",
            "detail": "Add an appropriate CSP to reduce script injection and resource loading risk."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 30,
        "urgency": "medium",
        "origin": "https://administracion.gob.es",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://administracion.gob.es/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/favicon.ico",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 2403496.2,
        "checks": {
          "hasEffectiveTextCompression": false
        },
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "estimatedSavingsBytes": 1313541,
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "estimatedSavingsBytes": 891965,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "estimatedSavingsBytes": 126680.2,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "estimatedSavingsBytes": 63759,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "estimatedSavingsBytes": 7551,
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings."
          }
        ],
        "recommendations": [
          {
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
          },
          {
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
          },
          {
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 7.37 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 4268794.2,
        "totalEstimatedBlockingMs": 9228,
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable text compression",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat.",
            "estimatedSavingsBytes": 1313541,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,283 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-text-compression"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 1196116,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,168 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 891965,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 871 KiB",
            "urgency": "high",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unused-javascript",
            "title": "Remove unused JavaScript",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code.",
            "estimatedSavingsBytes": 547292,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 534 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-javascript"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9228,
            "displayValue": "Est savings of 9,230 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 126680.2,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 124 KiB",
            "urgency": "medium",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "offscreen-images",
            "title": "Lazy-load offscreen images",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed.",
            "estimatedSavingsBytes": 115178,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 112 KiB",
            "urgency": "medium",
            "sourceAuditId": "offscreen-images"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 63759,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 62 KiB",
            "urgency": "medium",
            "sourceAuditId": "unminified-javascript"
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss.",
            "estimatedSavingsBytes": 7551,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-optimized-images"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 6712,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-responsive-images"
          }
        ],
        "recommendations": [
          {
            "title": "Enable text compression",
            "urgency": "high",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat. Estimated byte savings: 1.25 MB."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "high",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 1.14 MB."
          },
          {
            "title": "Minify CSS",
            "urgency": "high",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 871.06 KB."
          },
          {
            "title": "Remove unused JavaScript",
            "urgency": "high",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code. Estimated byte savings: 534.46 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 9228 ms."
          },
          {
            "title": "Serve images in next-gen formats",
            "urgency": "medium",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 123.71 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1919739
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.83 MB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.83 MB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 30,
        "urgency": "high",
        "transferBytes": 2229302,
        "css": {
          "unusedBytes": 1196116,
          "ratio": 0.5365428282036261,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 547292,
          "duplicatedBytes": 0,
          "ratio": 0.24549926389515642,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "high",
            "estimatedSavingsBytes": 1196116,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          },
          {
            "area": "javascript",
            "title": "Remove unused JavaScript and feature bundles",
            "urgency": "high",
            "estimatedSavingsBytes": 547292,
            "strategy": "Drop unused packages and feature code, or move them behind route-level or interaction-triggered imports.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 35,
        "urgency": "high",
        "transferBytes": 2229302,
        "estimatedDeferrableBytes": 1858586,
        "renderBlockingMs": 9228,
        "breakdown": {
          "offscreenImageSavings": 115178,
          "unusedJavascriptSavings": 547292,
          "unusedCssSavings": 1196116
        },
        "candidates": [
          {
            "title": "Lazy-load offscreen images",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 115178,
            "strategy": "Load below-the-fold images only when they approach the viewport.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Defer non-critical JavaScript",
            "area": "javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 547292,
            "strategy": "Split bundles and load feature code on interaction or route transition.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1196116,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9228,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy stylesheet from administracion.gob.es",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from administracion.gob.es",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 254418,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from administracion.gob.es",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.googletagmanager.com",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 145384,
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 34,
        "urgency": "medium",
        "providerCount": 1,
        "requestCount": 2,
        "transferBytes": 290073,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290073,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "medium",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "medium",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          }
        ]
      },
      "redundancy": {
        "score": 68,
        "urgency": "high",
        "transferBytes": 2229302,
        "estimatedRedundantBytes": 1743408,
        "redundancyRatio": 0.7820420920987825,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 1196116,
            "displayValue": "Est savings of 1,168 KiB"
          },
          {
            "auditId": "unused-javascript",
            "title": "Reduce unused JavaScript",
            "savingsBytes": 547292,
            "displayValue": "Est savings of 534 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "high",
            "estimatedSavingsBytes": 1196116,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce unused javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 547292,
            "auditId": "unused-javascript",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Enable and verify text compression",
            "urgency": "medium",
            "estimatedSavingsBytes": 1313541,
            "auditId": "uses-text-compression",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 47,
        "urgency": "high",
        "totalTransferBytes": 2229302,
        "heavyRequestCount": 6,
        "heavyBytes": 1925291,
        "heavyRatio": 0.8636295127353764,
        "heavyRequests": [
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "transferSize": 1177193,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "transferSize": 254418,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "transferSize": 159823,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "transferSize": 145384,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-4YNNM3J1E0&cx=c&gtm=4e63p1",
            "transferSize": 144689,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/libs/jquery.mCustomScrollbar.css",
            "transferSize": 43784,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 1220977
          },
          {
            "resourceType": "script",
            "count": 3,
            "transferBytes": 544491
          },
          {
            "resourceType": "image",
            "count": 1,
            "transferBytes": 159823
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "administracion.gob.es",
            "count": 4,
            "transferBytes": 1635218
          },
          {
            "domain": "www.googletagmanager.com",
            "count": 2,
            "transferBytes": 290073
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Lazy-load offscreen images and media galleries",
            "urgency": "medium",
            "estimatedSavingsBytes": 115178,
            "strategy": "Load imagery only when it enters the viewport or when a user opens the relevant section.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Split JavaScript by route or interaction",
            "urgency": "high",
            "estimatedSavingsBytes": 547292,
            "strategy": "Move non-critical bundles behind route-level or event-driven imports so they are only fetched on demand.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy stylesheet asset from administracion.gob.es",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "strategy": "Split this stylesheet so component-specific CSS is delivered only when the component is rendered.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 254418,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0,
          "displayValue": "12.3 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 12.3 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": 0.06,
          "displayValue": "11.1 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- Current value: 11.1 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": 0,
          "displayValue": "Est savings of 534 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- Current value: Est savings of 534 KiB\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 1,168 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 1,168 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 9,230 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 9,230 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": 0,
          "displayValue": "Est savings of 1,283 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- Current value: Est savings of 1,283 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 124 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 124 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 7 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- Current value: Est savings of 7 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 112 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- Current value: Est savings of 112 KiB\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://administracion.gob.es/pag_Home/gl/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/educacion/practicas/contrato",
      "status": "ok",
      "finalUrl": "https://administracion.gob.es/pag_Home/gl/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/educacion/practicas/contrato",
      "performanceScore": 0.55,
      "bestPracticesScore": 0.79,
      "transferBytes": 2206115,
      "co2Grams": 0.8451216227610001,
      "greenWeb": {
        "page": {
          "hostname": "administracion.gob.es",
          "checked": true,
          "status": "not-green",
          "green": false,
          "hostedBy": null,
          "hostedByWebsite": null,
          "listedProvider": null,
          "partner": null,
          "modified": "2026-03-29T13:38:28.588564",
          "supportingDocuments": [],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/administracion.gob.es",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290070,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "not-green",
          "externalOriginCount": 1,
          "greenCount": 1,
          "notGreenCount": 1,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 70,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/buscador/buscadorsimple.htm|input|text|q|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "q",
            "formContext": "form|get|/buscador/buscadorsimple.htm",
            "hasLabel": false,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 70,
              "urgency": "high",
              "issues": [
                "Missing associated label",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add a programmatic label using <label>, aria-label, or aria-labelledby.",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "Missing associated label",
            "urgency": "high",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 25,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": true,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": false,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Contrato formativo para la obtención de la práctica profesional - Contratos y programas de prácticas - Educación, voluntariado, contrato de prácticas e investigación - Ciudadanos - Tus derechos y obligaciones en la UE - Tu espacio europeo - Punto de Acceso General",
          "lang": "gl",
          "charset": "",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Conoce qué es un contrato en prácticas y los requisitos para su acceso.",
          "robots": "all",
          "canonical": "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/ciudadanos/educacion/practicas/contrato",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 34,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 30,
          "tabletSmallTapTargets": 63,
          "fixedWidthOffenders": 2,
          "oversizedMedia": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 399,
            "viewportHeight": 864,
            "contentWidth": 399,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 2,
            "smallTapTargets": 30,
            "oversizedMedia": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 829,
            "viewportHeight": 1193,
            "contentWidth": 829,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 63,
            "oversizedMedia": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 30 small targets on mobile and 63 on tablet."
          },
          {
            "title": "Refactor fixed-width components",
            "urgency": "medium",
            "detail": "2 element(s) exceeded viewport width in tested layouts; use responsive component constraints."
          }
        ]
      },
      "securityLight": {
        "score": 31,
        "urgency": "medium",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": false,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "connection": "Keep-Alive",
            "content-encoding": "gzip",
            "content-type": "text/html;charset=UTF-8",
            "date": "Mon, 30 Mar 2026 00:54:04 GMT",
            "keep-alive": "timeout=15, max=500",
            "referrer-policy": "origin-when-cross-origin,strict-origin-when-cross-origin",
            "server": "Microsoft-IIS/5.0",
            "set-cookie": "VISITOR=returning; Path=/pag_Home/gl/Tu-espacio-europeo/derechos-obligaciones/ciudadanos; HttpOnly; Secure; SameSite=None\nTS01a8e1d0=01d9c3d318e7a8c865cff5bfbfde2a5a70a79c504eb3b65702792a2422d6dea9a14fbb8c75c755b532d4af8734a0a9da2940d3f8020813121b758b0f755a937321c48a41049cc9ec1af9ede690ff0b835cb184dc63; Path=/; HttpOnly; Secure; SameSite=None\nTS0146228d=01d9c3d31875eb4ee065abf109a5ef141663ea9e5662999d88da62791f603954b0657e3ad206abe0e840a1f31af532847905d0382b90b7a84781f287b0f8ea376c270e95758790e5f992ab8a462f1118463bf9b8565956db104bfe20987b3f54c98e7c3998; path=/pag_Home/gl/Tu-espacio-europeo/derechos-obligaciones/ciudadanos; HttpOnly; Secure; SameSite=None",
            "strict-transport-security": "max-age=63072000; preload",
            "transfer-encoding": "chunked",
            "vary": "Accept-Encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1;mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add a Content-Security-Policy header",
            "urgency": "high",
            "detail": "Add an appropriate CSP to reduce script injection and resource loading risk."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 30,
        "urgency": "medium",
        "origin": "https://administracion.gob.es",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://administracion.gob.es/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/favicon.ico",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 2403496.2,
        "checks": {
          "hasEffectiveTextCompression": false
        },
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "estimatedSavingsBytes": 1313541,
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "estimatedSavingsBytes": 891965,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "estimatedSavingsBytes": 126680.2,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "estimatedSavingsBytes": 63759,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "estimatedSavingsBytes": 7551,
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings."
          }
        ],
        "recommendations": [
          {
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
          },
          {
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
          },
          {
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 7.37 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 4251197.2,
        "totalEstimatedBlockingMs": 9447,
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable text compression",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat.",
            "estimatedSavingsBytes": 1313541,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,283 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-text-compression"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 1195884,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,168 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 891965,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 871 KiB",
            "urgency": "high",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unused-javascript",
            "title": "Remove unused JavaScript",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code.",
            "estimatedSavingsBytes": 545418,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 533 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-javascript"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9447,
            "displayValue": "Est savings of 9,450 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 126680.2,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 124 KiB",
            "urgency": "medium",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "offscreen-images",
            "title": "Lazy-load offscreen images",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed.",
            "estimatedSavingsBytes": 99687,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 97 KiB",
            "urgency": "medium",
            "sourceAuditId": "offscreen-images"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 63759,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 62 KiB",
            "urgency": "medium",
            "sourceAuditId": "unminified-javascript"
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss.",
            "estimatedSavingsBytes": 7551,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-optimized-images"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 6712,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-responsive-images"
          }
        ],
        "recommendations": [
          {
            "title": "Enable text compression",
            "urgency": "high",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat. Estimated byte savings: 1.25 MB."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "high",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 1.14 MB."
          },
          {
            "title": "Minify CSS",
            "urgency": "high",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 871.06 KB."
          },
          {
            "title": "Remove unused JavaScript",
            "urgency": "high",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code. Estimated byte savings: 532.63 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 9447 ms."
          },
          {
            "title": "Serve images in next-gen formats",
            "urgency": "medium",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 123.71 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1898248
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.81 MB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.81 MB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 30,
        "urgency": "high",
        "transferBytes": 2206115,
        "css": {
          "unusedBytes": 1195884,
          "ratio": 0.5420769089553356,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 545418,
          "duplicatedBytes": 0,
          "ratio": 0.24723008546698608,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "high",
            "estimatedSavingsBytes": 1195884,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          },
          {
            "area": "javascript",
            "title": "Remove unused JavaScript and feature bundles",
            "urgency": "high",
            "estimatedSavingsBytes": 545418,
            "strategy": "Drop unused packages and feature code, or move them behind route-level or interaction-triggered imports.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 35,
        "urgency": "high",
        "transferBytes": 2206115,
        "estimatedDeferrableBytes": 1840989,
        "renderBlockingMs": 9447,
        "breakdown": {
          "offscreenImageSavings": 99687,
          "unusedJavascriptSavings": 545418,
          "unusedCssSavings": 1195884
        },
        "candidates": [
          {
            "title": "Lazy-load offscreen images",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 99687,
            "strategy": "Load below-the-fold images only when they approach the viewport.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Defer non-critical JavaScript",
            "area": "javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 545418,
            "strategy": "Split bundles and load feature code on interaction or route transition.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1195884,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9447,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy stylesheet from administracion.gob.es",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from administracion.gob.es",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 254418,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from administracion.gob.es",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 159817,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.googletagmanager.com",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 145380,
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 34,
        "urgency": "medium",
        "providerCount": 1,
        "requestCount": 2,
        "transferBytes": 290070,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290070,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "medium",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "medium",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          }
        ]
      },
      "redundancy": {
        "score": 68,
        "urgency": "high",
        "transferBytes": 2206115,
        "estimatedRedundantBytes": 1741302,
        "redundancyRatio": 0.7893069944223216,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 1195884,
            "displayValue": "Est savings of 1,168 KiB"
          },
          {
            "auditId": "unused-javascript",
            "title": "Reduce unused JavaScript",
            "savingsBytes": 545418,
            "displayValue": "Est savings of 533 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "high",
            "estimatedSavingsBytes": 1195884,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce unused javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 545418,
            "auditId": "unused-javascript",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Enable and verify text compression",
            "urgency": "medium",
            "estimatedSavingsBytes": 1313541,
            "auditId": "uses-text-compression",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 47,
        "urgency": "high",
        "totalTransferBytes": 2206115,
        "heavyRequestCount": 6,
        "heavyBytes": 1925282,
        "heavyRatio": 0.8727024656466231,
        "heavyRequests": [
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "transferSize": 1177193,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "transferSize": 254418,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "transferSize": 159817,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "transferSize": 145380,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-4YNNM3J1E0&cx=c&gtm=4e63p1",
            "transferSize": 144690,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/libs/jquery.mCustomScrollbar.css",
            "transferSize": 43784,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 1220977
          },
          {
            "resourceType": "script",
            "count": 3,
            "transferBytes": 544488
          },
          {
            "resourceType": "image",
            "count": 1,
            "transferBytes": 159817
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "administracion.gob.es",
            "count": 4,
            "transferBytes": 1635212
          },
          {
            "domain": "www.googletagmanager.com",
            "count": 2,
            "transferBytes": 290070
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Lazy-load offscreen images and media galleries",
            "urgency": "medium",
            "estimatedSavingsBytes": 99687,
            "strategy": "Load imagery only when it enters the viewport or when a user opens the relevant section.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Split JavaScript by route or interaction",
            "urgency": "high",
            "estimatedSavingsBytes": 545418,
            "strategy": "Move non-critical bundles behind route-level or event-driven imports so they are only fetched on demand.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy stylesheet asset from administracion.gob.es",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "strategy": "Split this stylesheet so component-specific CSS is delivered only when the component is rendered.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 254418,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 159817,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0,
          "displayValue": "12.1 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 12.1 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": 0.04,
          "displayValue": "11.6 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- Current value: 11.6 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": 0,
          "displayValue": "Est savings of 533 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- Current value: Est savings of 533 KiB\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 1,168 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 1,168 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 9,450 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 9,450 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": 0,
          "displayValue": "Est savings of 1,283 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- Current value: Est savings of 1,283 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 124 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 124 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 7 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- Current value: Est savings of 7 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 97 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- Current value: Est savings of 97 KiB\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://administracion.gob.es/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/empresas/contratacion-publica/participar-licitaciones/procedimientos-adjudicacion",
      "status": "ok",
      "finalUrl": "https://administracion.gob.es/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/empresas/contratacion-publica/participar-licitaciones/procedimientos-adjudicacion",
      "performanceScore": 0.55,
      "bestPracticesScore": 0.79,
      "transferBytes": 2238026,
      "co2Grams": 0.8573461333164001,
      "greenWeb": {
        "page": {
          "hostname": "administracion.gob.es",
          "checked": true,
          "status": "not-green",
          "green": false,
          "hostedBy": null,
          "hostedByWebsite": null,
          "listedProvider": null,
          "partner": null,
          "modified": "2026-03-29T13:38:28.588564",
          "supportingDocuments": [],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/administracion.gob.es",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290075,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "not-green",
          "externalOriginCount": 1,
          "greenCount": 1,
          "notGreenCount": 1,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 70,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/buscador/buscadorsimple.htm|input|text|q|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "q",
            "formContext": "form|get|/buscador/buscadorsimple.htm",
            "hasLabel": false,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 70,
              "urgency": "high",
              "issues": [
                "Missing associated label",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add a programmatic label using <label>, aria-label, or aria-labelledby.",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "Missing associated label",
            "urgency": "high",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 35,
        "urgency": "medium",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": false,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": false,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Award procedures - Public contracts: Participating in public tenders - Public contracts - Business - Your rights and obligations in the EU - Tu espacio europeo - Punto de Acceso General",
          "lang": "en",
          "charset": "",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Information about open procedures, simplified open procedures, restricted procedures, competitive procedures with negotiation, negotiated procedures without publication, competitive dialogues and innovation partnerships.",
          "robots": "all",
          "canonical": "",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Add canonical URL metadata",
            "urgency": "medium",
            "detail": "Use rel=canonical to reduce duplicate URL ambiguity for crawlers and tooling."
          },
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 32,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 55,
          "tabletSmallTapTargets": 79,
          "fixedWidthOffenders": 1,
          "oversizedMedia": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 399,
            "viewportHeight": 864,
            "contentWidth": 399,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 1,
            "smallTapTargets": 55,
            "oversizedMedia": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 829,
            "viewportHeight": 1193,
            "contentWidth": 829,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 79,
            "oversizedMedia": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 55 small targets on mobile and 79 on tablet."
          },
          {
            "title": "Refactor fixed-width components",
            "urgency": "medium",
            "detail": "1 element(s) exceeded viewport width in tested layouts; use responsive component constraints."
          }
        ]
      },
      "securityLight": {
        "score": 31,
        "urgency": "medium",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": false,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "connection": "Keep-Alive",
            "content-encoding": "gzip",
            "content-type": "text/html;charset=UTF-8",
            "date": "Mon, 30 Mar 2026 00:54:29 GMT",
            "keep-alive": "timeout=15, max=500",
            "referrer-policy": "origin-when-cross-origin,strict-origin-when-cross-origin",
            "server": "Microsoft-IIS/5.0",
            "set-cookie": "VISITOR=returning; Path=/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/empresas; HttpOnly; Secure; SameSite=None\nTS01a8e1d0=01d9c3d318e7a8c865cff5bfbfde2a5a70a79c504eb3b65702792a2422d6dea9a14fbb8c75c755b532d4af8734a0a9da2940d3f8020813121b758b0f755a937321c48a41049cc9ec1af9ede690ff0b835cb184dc63; Path=/; HttpOnly; Secure; SameSite=None\nTS01e4c404=01d9c3d3183d0ab5e35f0a4d3b0e06f02e6973180380529b1b9ba56384d07a19b66567890ae44783a444bdd5d48d6a967bacc4b9ad4bff902aea9909935fb9326af3d6d004f98a4d48eaff3a52021502918d296d1fe81761193e34385adc30c5a064c0078b; path=/pag_Home/en/Tu-espacio-europeo/derechos-obligaciones/empresas; HttpOnly; Secure; SameSite=None",
            "strict-transport-security": "max-age=63072000; preload",
            "transfer-encoding": "chunked",
            "vary": "Accept-Encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1;mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add a Content-Security-Policy header",
            "urgency": "high",
            "detail": "Add an appropriate CSP to reduce script injection and resource loading risk."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 30,
        "urgency": "medium",
        "origin": "https://administracion.gob.es",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://administracion.gob.es/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/favicon.ico",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 2403496.2,
        "checks": {
          "hasEffectiveTextCompression": false
        },
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "estimatedSavingsBytes": 1313541,
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "estimatedSavingsBytes": 891965,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "estimatedSavingsBytes": 126680.2,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "estimatedSavingsBytes": 63759,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "estimatedSavingsBytes": 7551,
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings."
          }
        ],
        "recommendations": [
          {
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
          },
          {
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
          },
          {
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 7.37 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 4279346.2,
        "totalEstimatedBlockingMs": 9119,
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable text compression",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat.",
            "estimatedSavingsBytes": 1313541,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,283 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-text-compression"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 1196066,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,168 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 891965,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 871 KiB",
            "urgency": "high",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unused-javascript",
            "title": "Remove unused JavaScript",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code.",
            "estimatedSavingsBytes": 547292,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 534 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-javascript"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9119,
            "displayValue": "Est savings of 9,120 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 126680.2,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 124 KiB",
            "urgency": "medium",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "offscreen-images",
            "title": "Lazy-load offscreen images",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed.",
            "estimatedSavingsBytes": 125780,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 123 KiB",
            "urgency": "medium",
            "sourceAuditId": "offscreen-images"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 63759,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 62 KiB",
            "urgency": "medium",
            "sourceAuditId": "unminified-javascript"
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss.",
            "estimatedSavingsBytes": 7551,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-optimized-images"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 6712,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-responsive-images"
          }
        ],
        "recommendations": [
          {
            "title": "Enable text compression",
            "urgency": "high",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat. Estimated byte savings: 1.25 MB."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "high",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 1.14 MB."
          },
          {
            "title": "Minify CSS",
            "urgency": "high",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 871.06 KB."
          },
          {
            "title": "Remove unused JavaScript",
            "urgency": "high",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code. Estimated byte savings: 534.46 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 9119 ms."
          },
          {
            "title": "Serve images in next-gen formats",
            "urgency": "medium",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 123.71 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1928251
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.84 MB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.84 MB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 30,
        "urgency": "high",
        "transferBytes": 2238026,
        "css": {
          "unusedBytes": 1196066,
          "ratio": 0.5344290012716564,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 547292,
          "duplicatedBytes": 0,
          "ratio": 0.24454228860611985,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "high",
            "estimatedSavingsBytes": 1196066,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          },
          {
            "area": "javascript",
            "title": "Remove unused JavaScript and feature bundles",
            "urgency": "high",
            "estimatedSavingsBytes": 547292,
            "strategy": "Drop unused packages and feature code, or move them behind route-level or interaction-triggered imports.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 35,
        "urgency": "high",
        "transferBytes": 2238026,
        "estimatedDeferrableBytes": 1869138,
        "renderBlockingMs": 9119,
        "breakdown": {
          "offscreenImageSavings": 125780,
          "unusedJavascriptSavings": 547292,
          "unusedCssSavings": 1196066
        },
        "candidates": [
          {
            "title": "Lazy-load offscreen images",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 125780,
            "strategy": "Load below-the-fold images only when they approach the viewport.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Defer non-critical JavaScript",
            "area": "javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 547292,
            "strategy": "Split bundles and load feature code on interaction or route transition.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1196066,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9119,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy stylesheet from administracion.gob.es",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from administracion.gob.es",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 254418,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from administracion.gob.es",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.googletagmanager.com",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 145385,
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 34,
        "urgency": "medium",
        "providerCount": 1,
        "requestCount": 2,
        "transferBytes": 290075,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290075,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "medium",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "medium",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          }
        ]
      },
      "redundancy": {
        "score": 68,
        "urgency": "high",
        "transferBytes": 2238026,
        "estimatedRedundantBytes": 1743358,
        "redundancyRatio": 0.7789712898777762,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 1196066,
            "displayValue": "Est savings of 1,168 KiB"
          },
          {
            "auditId": "unused-javascript",
            "title": "Reduce unused JavaScript",
            "savingsBytes": 547292,
            "displayValue": "Est savings of 534 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "high",
            "estimatedSavingsBytes": 1196066,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce unused javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 547292,
            "auditId": "unused-javascript",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Enable and verify text compression",
            "urgency": "medium",
            "estimatedSavingsBytes": 1313541,
            "auditId": "uses-text-compression",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 46,
        "urgency": "high",
        "totalTransferBytes": 2238026,
        "heavyRequestCount": 6,
        "heavyBytes": 1925293,
        "heavyRatio": 0.8602639111431234,
        "heavyRequests": [
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "transferSize": 1177193,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "transferSize": 254418,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "transferSize": 159823,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "transferSize": 145385,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-4YNNM3J1E0&cx=c&gtm=4e63p1",
            "transferSize": 144690,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/libs/jquery.mCustomScrollbar.css",
            "transferSize": 43784,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 1220977
          },
          {
            "resourceType": "script",
            "count": 3,
            "transferBytes": 544493
          },
          {
            "resourceType": "image",
            "count": 1,
            "transferBytes": 159823
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "administracion.gob.es",
            "count": 4,
            "transferBytes": 1635218
          },
          {
            "domain": "www.googletagmanager.com",
            "count": 2,
            "transferBytes": 290075
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Lazy-load offscreen images and media galleries",
            "urgency": "medium",
            "estimatedSavingsBytes": 125780,
            "strategy": "Load imagery only when it enters the viewport or when a user opens the relevant section.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Split JavaScript by route or interaction",
            "urgency": "high",
            "estimatedSavingsBytes": 547292,
            "strategy": "Move non-critical bundles behind route-level or event-driven imports so they are only fetched on demand.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy stylesheet asset from administracion.gob.es",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "strategy": "Split this stylesheet so component-specific CSS is delivered only when the component is rendered.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 254418,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0,
          "displayValue": "12.6 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 12.6 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": 0.01,
          "displayValue": "14.1 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- Current value: 14.1 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": 0,
          "displayValue": "Est savings of 534 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- Current value: Est savings of 534 KiB\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 1,168 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 1,168 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 9,120 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 9,120 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": 0,
          "displayValue": "Est savings of 1,283 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- Current value: Est savings of 1,283 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 124 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 124 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 7 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- Current value: Est savings of 7 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 123 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- Current value: Est savings of 123 KiB\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    },
    {
      "url": "https://administracion.gob.es/pag_Home/ca/Tu-espacio-europeo/derechos-obligaciones/empresas/inicio-gestion-cierre/seguro-credito",
      "status": "ok",
      "finalUrl": "https://administracion.gob.es/pag_Home/ca/Tu-espacio-europeo/derechos-obligaciones/empresas/inicio-gestion-cierre/seguro-credito",
      "performanceScore": 0.56,
      "bestPracticesScore": 0.79,
      "transferBytes": 2189584,
      "co2Grams": 0.8387889041376001,
      "greenWeb": {
        "page": {
          "hostname": "administracion.gob.es",
          "checked": true,
          "status": "not-green",
          "green": false,
          "hostedBy": null,
          "hostedByWebsite": null,
          "listedProvider": null,
          "partner": null,
          "modified": "2026-03-29T13:38:28.588564",
          "supportingDocuments": [],
          "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/administracion.gob.es",
          "error": null
        },
        "externalAssets": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290075,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "summary": {
          "pageStatus": "not-green",
          "externalOriginCount": 1,
          "greenCount": 1,
          "notGreenCount": 1,
          "unknownCount": 0
        }
      },
      "formValidation": {
        "score": 70,
        "urgency": "high",
        "pageElementOccurrences": 1,
        "uniqueElementsAssessed": 1,
        "reusedFromCacheCount": 1,
        "components": [
          {
            "signature": "form|get|/buscador/buscadorsimple.htm|input|text|q|no-autocomplete|optional|no-pattern|no-minlength",
            "role": "form",
            "controlType": "text",
            "fieldName": "q",
            "formContext": "form|get|/buscador/buscadorsimple.htm",
            "hasLabel": false,
            "hasValidationRule": true,
            "hasErrorMessagingHook": false,
            "toolingFriendly": false,
            "assessment": {
              "score": 70,
              "urgency": "high",
              "issues": [
                "Missing associated label",
                "No error messaging hook",
                "Missing autocomplete for tooling support"
              ],
              "recommendations": [
                "Add a programmatic label using <label>, aria-label, or aria-labelledby.",
                "Add aria-errormessage/aria-describedby and a visible error region for invalid input.",
                "Provide meaningful autocomplete values to support browsers and assistive tooling."
              ]
            },
            "reusedFromCache": true
          }
        ],
        "recommendations": [
          {
            "title": "Missing associated label",
            "urgency": "high",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "No error messaging hook",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          },
          {
            "title": "Missing autocomplete for tooling support",
            "urgency": "medium",
            "detail": "1 unique form control signature(s) on this page include this issue."
          }
        ]
      },
      "metadata": {
        "score": 25,
        "urgency": "low",
        "checks": {
          "hasTitle": true,
          "hasLang": true,
          "hasDescription": true,
          "hasCanonical": true,
          "hasOpenGraphCore": false,
          "hasTwitterCard": false,
          "hasViewport": true,
          "hasCharset": false,
          "hasValidStructuredData": true,
          "hasInvalidStructuredData": false
        },
        "observed": {
          "title": "Seguro de crédito - Puesta en marcha, gestión y cierre de una empresa - Empresas - Tus derechos y obligaciones en la UE - Tu espacio europeo - Punto de Acceso General",
          "lang": "ca",
          "charset": "",
          "viewport": "width=device-width, initial-scale=1.0",
          "description": "Conoce qué es el seguro de crédito y la cobertura de los principales riesgos",
          "robots": "all",
          "canonical": "https://administracion.gob.es/pag_Home/Tu-espacio-europeo/derechos-obligaciones/empresas/inicio-gestion-cierre/seguro-credito",
          "ogTitle": "",
          "ogDescription": "",
          "ogType": "",
          "ogUrl": "",
          "twitterCard": "",
          "ldJsonCount": 0,
          "validLdJsonCount": 0,
          "invalidLdJsonCount": 0
        },
        "recommendations": [
          {
            "title": "Complete Open Graph metadata",
            "urgency": "medium",
            "detail": "Include og:title, og:description, og:type, and og:url for robust machine-readable sharing metadata."
          },
          {
            "title": "Add twitter:card metadata",
            "urgency": "low",
            "detail": "Include twitter card metadata to improve cross-platform machine-readable previews."
          }
        ]
      },
      "layoutAdaptation": {
        "score": 32,
        "urgency": "medium",
        "checks": {
          "testedMobile": true,
          "testedTablet": true,
          "horizontalOverflowOnMobile": false,
          "horizontalOverflowOnTablet": false,
          "mobileSmallTapTargets": 48,
          "tabletSmallTapTargets": 79,
          "fixedWidthOffenders": 1,
          "oversizedMedia": 0,
          "scanErrors": 0
        },
        "perDevice": [
          {
            "device": "mobile",
            "viewportWidth": 399,
            "viewportHeight": 864,
            "contentWidth": 399,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 1,
            "smallTapTargets": 48,
            "oversizedMedia": 0
          },
          {
            "device": "tablet",
            "viewportWidth": 829,
            "viewportHeight": 1193,
            "contentWidth": 829,
            "horizontalOverflowPx": 0,
            "hasHorizontalOverflow": false,
            "fixedWidthOffenders": 0,
            "smallTapTargets": 79,
            "oversizedMedia": 0
          }
        ],
        "recommendations": [
          {
            "title": "Increase touch target sizes",
            "urgency": "high",
            "detail": "Ensure interactive controls are at least 44x44 CSS px. Detected 48 small targets on mobile and 79 on tablet."
          },
          {
            "title": "Refactor fixed-width components",
            "urgency": "medium",
            "detail": "1 element(s) exceeded viewport width in tested layouts; use responsive component constraints."
          }
        ]
      },
      "securityLight": {
        "score": 31,
        "urgency": "medium",
        "checks": {
          "isHttps": true,
          "hasHsts": true,
          "hasCsp": false,
          "hasXContentTypeOptions": true,
          "hasReferrerPolicy": true,
          "hasPermissionsPolicy": false,
          "exposesServerFingerprint": true,
          "externalScriptCount": 1,
          "externalScriptsWithoutIntegrity": 1,
          "vulnerableLibraryCount": 0
        },
        "observed": {
          "headers": {
            "connection": "Keep-Alive",
            "content-encoding": "gzip",
            "content-length": "14655",
            "content-type": "text/html;charset=UTF-8",
            "date": "Mon, 30 Mar 2026 00:54:51 GMT",
            "keep-alive": "timeout=15, max=500",
            "referrer-policy": "origin-when-cross-origin,strict-origin-when-cross-origin",
            "server": "Microsoft-IIS/5.0",
            "set-cookie": "VISITOR=returning; Path=/pag_Home/ca/Tu-espacio-europeo/derechos-obligaciones/empresas; HttpOnly; Secure; SameSite=None\nTS01a8e1d0=01d9c3d318e7a8c865cff5bfbfde2a5a70a79c504eb3b65702792a2422d6dea9a14fbb8c75c755b532d4af8734a0a9da2940d3f8020813121b758b0f755a937321c48a41049cc9ec1af9ede690ff0b835cb184dc63; Path=/; HttpOnly; Secure; SameSite=None\nTS013701fe=01d9c3d3183d0ab5e35f0a4d3b0e06f02e6973180380529b1b9ba56384d07a19b66567890ae44783a444bdd5d48d6a967bacc4b9ad4bff902aea9909935fb9326af3d6d004f98a4d48eaff3a52021502918d296d1fe81761193e34385adc30c5a064c0078b; path=/pag_Home/ca/Tu-espacio-europeo/derechos-obligaciones/empresas; HttpOnly; Secure; SameSite=None",
            "strict-transport-security": "max-age=63072000; preload",
            "vary": "Accept-Encoding",
            "x-content-type-options": "nosniff",
            "x-frame-options": "SAMEORIGIN",
            "x-xss-protection": "1;mode=block"
          },
          "vulnerableLibrariesAuditScore": null,
          "vulnerableLibraries": []
        },
        "recommendations": [
          {
            "title": "Add a Content-Security-Policy header",
            "urgency": "high",
            "detail": "Add an appropriate CSP to reduce script injection and resource loading risk."
          },
          {
            "title": "Define a Permissions-Policy",
            "urgency": "low",
            "detail": "Restrict browser capabilities to only what the application needs."
          },
          {
            "title": "Add SRI to external scripts",
            "urgency": "medium",
            "detail": "1 external script tag(s) are missing integrity attributes."
          }
        ]
      },
      "expectedFiles": {
        "score": 30,
        "urgency": "medium",
        "origin": "https://administracion.gob.es",
        "checks": [
          {
            "path": "/robots.txt",
            "kind": "expected",
            "url": "https://administracion.gob.es/robots.txt",
            "found": true,
            "status": 200,
            "contentType": "text/plain"
          },
          {
            "path": "/sitemap.xml",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/sitemap.xml",
            "found": true,
            "status": 200,
            "contentType": "application/xml"
          },
          {
            "path": "/.well-known/security.txt",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/.well-known/security.txt",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/manifest.webmanifest",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/manifest.webmanifest",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          },
          {
            "path": "/favicon.ico",
            "kind": "beneficial",
            "url": "https://administracion.gob.es/favicon.ico",
            "found": false,
            "status": 404,
            "contentType": "text/html; charset=iso-8859-1"
          }
        ],
        "recommendations": [
          {
            "title": "Add beneficial discoverability and maintenance files",
            "urgency": "medium",
            "detail": "Missing beneficial file(s): /.well-known/security.txt, /manifest.webmanifest, /favicon.ico."
          }
        ]
      },
      "compressionOpportunities": {
        "wsgReference": {
          "title": "Reduce data transfer with compression",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#reduce-data-transfer-with-compression"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 2403496.2,
        "checks": {
          "hasEffectiveTextCompression": false
        },
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "estimatedSavingsBytes": 1313541,
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip."
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "estimatedSavingsBytes": 891965,
            "detail": "Minification amplifies compression efficiency and reduces payload size."
          },
          {
            "id": "modern-image-formats",
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "estimatedSavingsBytes": 126680.2,
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size."
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "estimatedSavingsBytes": 63759,
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes."
          },
          {
            "id": "uses-optimized-images",
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "estimatedSavingsBytes": 7551,
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings."
          }
        ],
        "recommendations": [
          {
            "title": "Enable Brotli/gzip for text assets",
            "urgency": "high",
            "detail": "Compress HTML, CSS, JS, JSON, SVG, and XML responses with Brotli or gzip. Estimated savings: 1.25 MB."
          },
          {
            "title": "Minify CSS before transfer",
            "urgency": "high",
            "detail": "Minification amplifies compression efficiency and reduces payload size. Estimated savings: 871.06 KB."
          },
          {
            "title": "Use modern image compression formats",
            "urgency": "medium",
            "detail": "Prefer AVIF/WebP over legacy formats where possible to reduce transfer size. Estimated savings: 123.71 KB."
          },
          {
            "title": "Minify JavaScript before transfer",
            "urgency": "medium",
            "detail": "Minify JS bundles so transport compression produces better results with fewer bytes. Estimated savings: 62.26 KB."
          },
          {
            "title": "Improve image encoding quality/size",
            "urgency": "low",
            "detail": "Re-encode oversized images and tune compression quality for significant byte savings. Estimated savings: 7.37 KB."
          }
        ]
      },
      "optimizationOpportunities": {
        "wsgReference": {
          "title": "Use the most efficient solution for your service",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service"
        },
        "score": 100,
        "urgency": "high",
        "totalEstimatedSavingsBytes": 4245714.2,
        "totalEstimatedBlockingMs": 9312,
        "opportunities": [
          {
            "id": "uses-text-compression",
            "title": "Enable text compression",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat.",
            "estimatedSavingsBytes": 1313541,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,283 KiB",
            "urgency": "high",
            "sourceAuditId": "uses-text-compression"
          },
          {
            "id": "unused-css-rules",
            "title": "Remove unused CSS",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped.",
            "estimatedSavingsBytes": 1197937,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 1,170 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-css-rules"
          },
          {
            "id": "unminified-css",
            "title": "Minify CSS",
            "detail": "Use minified production CSS output to reduce bytes in transit.",
            "estimatedSavingsBytes": 891965,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 871 KiB",
            "urgency": "high",
            "sourceAuditId": "unminified-css"
          },
          {
            "id": "unused-javascript",
            "title": "Remove unused JavaScript",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code.",
            "estimatedSavingsBytes": 546454,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 534 KiB",
            "urgency": "high",
            "sourceAuditId": "unused-javascript"
          },
          {
            "id": "render-blocking-resources",
            "title": "Eliminate render-blocking resources",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering.",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9312,
            "displayValue": "Est savings of 9,310 ms",
            "urgency": "high",
            "sourceAuditId": "render-blocking-resources"
          },
          {
            "id": "modern-image-formats",
            "title": "Serve images in next-gen formats",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP.",
            "estimatedSavingsBytes": 126680.2,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 124 KiB",
            "urgency": "medium",
            "sourceAuditId": "modern-image-formats"
          },
          {
            "id": "offscreen-images",
            "title": "Lazy-load offscreen images",
            "detail": "Defer below-the-fold imagery until it is likely to be viewed.",
            "estimatedSavingsBytes": 91115,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 89 KiB",
            "urgency": "medium",
            "sourceAuditId": "offscreen-images"
          },
          {
            "id": "unminified-javascript",
            "title": "Minify JavaScript",
            "detail": "Use minified production JS output to reduce payload size.",
            "estimatedSavingsBytes": 63759,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 62 KiB",
            "urgency": "medium",
            "sourceAuditId": "unminified-javascript"
          },
          {
            "id": "uses-optimized-images",
            "title": "Compress oversized image assets",
            "detail": "Re-encode large images to reduce transfer weight without visible quality loss.",
            "estimatedSavingsBytes": 7551,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-optimized-images"
          },
          {
            "id": "uses-responsive-images",
            "title": "Right-size images for viewport",
            "detail": "Avoid sending larger images than the rendered size needs.",
            "estimatedSavingsBytes": 6712,
            "estimatedBlockingMs": 0,
            "displayValue": "Est savings of 7 KiB",
            "urgency": "low",
            "sourceAuditId": "uses-responsive-images"
          }
        ],
        "recommendations": [
          {
            "title": "Enable text compression",
            "urgency": "high",
            "detail": "Serve text assets with Brotli or gzip to remove avoidable transfer bloat. Estimated byte savings: 1.25 MB."
          },
          {
            "title": "Remove unused CSS",
            "urgency": "high",
            "detail": "Trim unused selectors and split CSS so only needed styles are shipped. Estimated byte savings: 1.14 MB."
          },
          {
            "title": "Minify CSS",
            "urgency": "high",
            "detail": "Use minified production CSS output to reduce bytes in transit. Estimated byte savings: 871.06 KB."
          },
          {
            "title": "Remove unused JavaScript",
            "urgency": "high",
            "detail": "Reduce dead JS and split bundles to avoid shipping non-critical code. Estimated byte savings: 533.65 KB."
          },
          {
            "title": "Eliminate render-blocking resources",
            "urgency": "high",
            "detail": "Inline critical assets and defer non-critical scripts/styles for faster rendering. Estimated render unblocking: 9312 ms."
          },
          {
            "title": "Serve images in next-gen formats",
            "urgency": "medium",
            "detail": "Convert high-byte images to more efficient formats such as AVIF or WebP. Estimated byte savings: 123.71 KB."
          }
        ]
      },
      "dependencyMaintenance": {
        "wsgReference": {
          "title": "Use dependencies appropriately and ensure maintenance",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance"
        },
        "score": 2,
        "urgency": "medium",
        "vulnerableLibraryCount": 0,
        "vulnerableLibraries": [],
        "externalScriptsWithoutIntegrity": 1,
        "recommendations": [
          {
            "title": "Add integrity attributes for external dependencies",
            "urgency": "medium",
            "detail": "1 external script dependency URL(s) are missing SRI integrity attributes."
          }
        ]
      },
      "offlineSupport": {
        "wsgReference": {
          "title": "Optimize caching and support offline access",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-caching-and-support-offline-access"
        },
        "score": 100,
        "urgency": "high",
        "checks": {
          "hasServiceWorker": false,
          "worksOffline": false,
          "hasInstallableManifest": false,
          "hasOfflineStartUrl": false,
          "longCacheTtlScore": 0.5,
          "cacheSavingsBytes": 1882018
        },
        "opportunities": [
          {
            "id": "service-worker",
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "id": "works-offline",
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "id": "installable-manifest",
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "id": "offline-start-url",
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "id": "uses-long-cache-ttl",
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.79 MB)."
          }
        ],
        "recommendations": [
          {
            "title": "Add service worker support",
            "urgency": "high",
            "detail": "Register a service worker to support resilient caching and offline behavior for key routes."
          },
          {
            "title": "Ensure critical routes work offline",
            "urgency": "high",
            "detail": "Provide an offline fallback strategy for key pages and shell assets."
          },
          {
            "title": "Improve web app manifest support",
            "urgency": "medium",
            "detail": "Complete manifest fields so clients can install and run an app-like experience."
          },
          {
            "title": "Support offline start URL behavior",
            "urgency": "medium",
            "detail": "Ensure start URL and shell routing can load in disconnected conditions."
          },
          {
            "title": "Strengthen static asset cache TTL",
            "urgency": "medium",
            "detail": "Improve long-lived cache headers for immutable static assets (estimated savings opportunity: 1.79 MB)."
          }
        ]
      },
      "languageVersionGuidance": {
        "wsgReference": {
          "title": "Use the latest stable language version",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-latest-stable-language-version"
        },
        "score": 0,
        "urgency": "low",
        "observedTechnologies": [],
        "outdatedTechnologies": [],
        "vulnerableLibraryCount": 0,
        "recommendations": [
          {
            "title": "No obvious outdated runtime version disclosed",
            "urgency": "low",
            "detail": "No clearly outdated runtime version signals were exposed in sampled HTTP headers. Verify language/runtime versions in source and CI since backend versions are not always externally visible."
          }
        ]
      },
      "deadCode": {
        "score": 30,
        "urgency": "high",
        "transferBytes": 2189584,
        "css": {
          "unusedBytes": 1197937,
          "ratio": 0.547107121718098,
          "auditId": "unused-css-rules"
        },
        "javascript": {
          "unusedBytes": 546454,
          "duplicatedBytes": 0,
          "ratio": 0.24956978129178875,
          "auditIds": [
            "unused-javascript",
            "duplicated-javascript"
          ]
        },
        "html": {
          "estimatedPenalty": 0,
          "totalBodyElements": 0,
          "maxDepth": 0,
          "maxChildElements": 0,
          "note": "HTML dead code cannot be measured directly from Lighthouse. This score estimates unnecessary markup from DOM size and complexity signals."
        },
        "recommendations": [
          {
            "area": "css",
            "title": "Remove unused CSS selectors and component styles",
            "urgency": "high",
            "estimatedSavingsBytes": 1197937,
            "strategy": "Trim styles that never match rendered markup and split component CSS so only used styles are shipped.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          },
          {
            "area": "javascript",
            "title": "Remove unused JavaScript and feature bundles",
            "urgency": "high",
            "estimatedSavingsBytes": 546454,
            "strategy": "Drop unused packages and feature code, or move them behind route-level or interaction-triggered imports.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "4",
              "title": "Remove unnecessary code",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
              "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "4",
          "title": "Remove unnecessary code",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-code",
          "subheading": "Clear out dead or unused code as it builds up in a project to reduce the amount of wasted data being transferred."
        }
      },
      "nonCriticalResources": {
        "score": 35,
        "urgency": "high",
        "transferBytes": 2189584,
        "estimatedDeferrableBytes": 1835506,
        "renderBlockingMs": 9312,
        "breakdown": {
          "offscreenImageSavings": 91115,
          "unusedJavascriptSavings": 546454,
          "unusedCssSavings": 1197937
        },
        "candidates": [
          {
            "title": "Lazy-load offscreen images",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 91115,
            "strategy": "Load below-the-fold images only when they approach the viewport.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Defer non-critical JavaScript",
            "area": "javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 546454,
            "strategy": "Split bundles and load feature code on interaction or route transition.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Inline critical CSS and defer remainder",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1197937,
            "strategy": "Ship only above-the-fold CSS in initial render path and defer non-critical styles.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Eliminate render-blocking resources",
            "area": "render-path",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "estimatedBlockingMs": 9312,
            "strategy": "Defer scripts/styles not required for first paint and preload only truly critical assets.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy stylesheet from administracion.gob.es",
            "area": "stylesheet",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from administracion.gob.es",
            "area": "script",
            "urgency": "high",
            "estimatedSavingsBytes": 254418,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy image from administracion.gob.es",
            "area": "image",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          },
          {
            "title": "Evaluate deferred loading for heavy script from www.googletagmanager.com",
            "area": "script",
            "urgency": "medium",
            "estimatedSavingsBytes": 145385,
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "strategy": "Confirm this asset is required for first paint; defer or lazy-load if not critical.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "8",
              "title": "Defer the loading of non-critical resources",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
              "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "8",
          "title": "Defer the loading of non-critical resources",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#defer-the-loading-of-non-critical-resources",
          "subheading": "Avoid render-blocking slowdowns by asynchronously loading, deferring, or prioritizing external resources as appropriate."
        }
      },
      "thirdPartyJs": {
        "wsgReference": {
          "title": "Give third parties the same priority as first parties during assessment",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#give-third-parties-the-same-priority-as-first-parties-during-assessment"
        },
        "score": 34,
        "urgency": "medium",
        "providerCount": 1,
        "requestCount": 2,
        "transferBytes": 290075,
        "notGreenCount": 0,
        "unknownCount": 0,
        "scripts": [
          {
            "hostname": "www.googletagmanager.com",
            "resourceType": "script",
            "requestCount": 2,
            "transferBytes": 290075,
            "sampleUrl": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "greenCheck": {
              "hostname": "www.googletagmanager.com",
              "checked": true,
              "status": "green",
              "green": true,
              "hostedBy": "Google Cloud",
              "hostedByWebsite": "https://cloud.google.com",
              "listedProvider": true,
              "partner": null,
              "modified": "2026-03-06T00:36:18",
              "supportingDocuments": [
                {
                  "id": 108,
                  "title": "Sustainability at Google",
                  "link": "https://sustainability.google"
                },
                {
                  "id": 1364,
                  "title": "Google 2024 Environmental Report",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-environmental-report.pdf"
                },
                {
                  "id": 1365,
                  "title": "Alphabet 2024 CDP Climate Change Response",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-2024-cdp-climate-change-response.pdf"
                },
                {
                  "id": 1366,
                  "title": "Google 2024 Supplier Responsibility Report.",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/google-2024-supplier-responsibility-report.pdf"
                },
                {
                  "id": 1367,
                  "title": "Alphabet FY2023 Environmental Indicators Assurance Letter",
                  "link": "https://www.gstatic.com/gumdrop/sustainability/alphabet-fy2023-environmental-indicators-assurance-letter.pdf"
                },
                {
                  "id": 1368,
                  "title": "3Degrees Cloud Services Review Statement",
                  "link": "https://services.google.com/fh/files/misc/3degrees_cloud_services_review_statement_final.pdf"
                }
              ],
              "source": "https://api.thegreenwebfoundation.org/api/v3/greencheck/www.googletagmanager.com",
              "error": null
            }
          }
        ],
        "recommendations": [
          {
            "title": "Maintain a third-party JavaScript inventory",
            "urgency": "medium",
            "detail": "Track 1 third-party script origin(s) and assign an owner plus business justification for each."
          },
          {
            "title": "Reduce third-party script payload and requests",
            "urgency": "medium",
            "detail": "Defer non-critical tags, remove unused vendors, and gate scripts behind consent or user interaction."
          }
        ]
      },
      "redundancy": {
        "score": 66,
        "urgency": "high",
        "transferBytes": 2189584,
        "estimatedRedundantBytes": 1744391,
        "redundancyRatio": 0.7966769030098868,
        "relatedAuditIds": [
          "unused-css-rules",
          "unused-javascript",
          "duplicated-javascript",
          "dom-size",
          "uses-text-compression",
          "unminified-css",
          "unminified-javascript"
        ],
        "wasteByAudit": [
          {
            "auditId": "unused-css-rules",
            "title": "Reduce unused CSS",
            "savingsBytes": 1197937,
            "displayValue": "Est savings of 1,170 KiB"
          },
          {
            "auditId": "unused-javascript",
            "title": "Reduce unused JavaScript",
            "savingsBytes": 546454,
            "displayValue": "Est savings of 534 KiB"
          }
        ],
        "recommendations": [
          {
            "title": "Reduce unused css",
            "urgency": "high",
            "estimatedSavingsBytes": 1197937,
            "auditId": "unused-css-rules",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Reduce unused javascript",
            "urgency": "high",
            "estimatedSavingsBytes": 546454,
            "auditId": "unused-javascript",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          },
          {
            "title": "Enable and verify text compression",
            "urgency": "medium",
            "estimatedSavingsBytes": 1313541,
            "auditId": "uses-text-compression",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "2",
              "title": "Remove unnecessary or redundant information",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
              "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "2",
          "title": "Remove unnecessary or redundant information",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
          "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
        }
      },
      "modularization": {
        "score": 47,
        "urgency": "high",
        "totalTransferBytes": 2189584,
        "heavyRequestCount": 6,
        "heavyBytes": 1925293,
        "heavyRatio": 0.879296249881256,
        "heavyRequests": [
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "transferSize": 1177193,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "transferSize": 254418,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "transferSize": 159823,
            "resourceType": "image",
            "mimeType": "image/png",
            "domain": "administracion.gob.es"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-2ESDVF5HXE",
            "transferSize": 145385,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://www.googletagmanager.com/gtag/js?id=G-4YNNM3J1E0&cx=c&gtm=4e63p1",
            "transferSize": 144690,
            "resourceType": "script",
            "mimeType": "application/javascript",
            "domain": "www.googletagmanager.com"
          },
          {
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/libs/jquery.mCustomScrollbar.css",
            "transferSize": 43784,
            "resourceType": "stylesheet",
            "mimeType": "text/css",
            "domain": "administracion.gob.es"
          }
        ],
        "groupedByType": [
          {
            "resourceType": "stylesheet",
            "count": 2,
            "transferBytes": 1220977
          },
          {
            "resourceType": "script",
            "count": 3,
            "transferBytes": 544493
          },
          {
            "resourceType": "image",
            "count": 1,
            "transferBytes": 159823
          }
        ],
        "groupedByOrigin": [
          {
            "domain": "administracion.gob.es",
            "count": 4,
            "transferBytes": 1635218
          },
          {
            "domain": "www.googletagmanager.com",
            "count": 2,
            "transferBytes": 290075
          }
        ],
        "onDemandCandidates": [
          {
            "title": "Lazy-load offscreen images and media galleries",
            "urgency": "medium",
            "estimatedSavingsBytes": 91115,
            "strategy": "Load imagery only when it enters the viewport or when a user opens the relevant section.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Split JavaScript by route or interaction",
            "urgency": "high",
            "estimatedSavingsBytes": 546454,
            "strategy": "Move non-critical bundles behind route-level or event-driven imports so they are only fetched on demand.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Defer non-critical UI modules until after first render",
            "urgency": "high",
            "estimatedSavingsBytes": 0,
            "strategy": "Keep only above-the-fold resources in the initial path; hydrate or import secondary modules later.",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy stylesheet asset from administracion.gob.es",
            "urgency": "high",
            "estimatedSavingsBytes": 1177193,
            "strategy": "Split this stylesheet so component-specific CSS is delivered only when the component is rendered.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/css/front-modules.css",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy script asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 254418,
            "strategy": "Load this script only on pages or interactions that require it; prefer dynamic import and feature-level bundles.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/js/libs/jquery-ui.min.js",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          },
          {
            "title": "Modularize heavy image asset from administracion.gob.es",
            "urgency": "medium",
            "estimatedSavingsBytes": 159823,
            "strategy": "Serve a smaller placeholder first and load this asset only when the user scrolls to or requests the component.",
            "url": "https://administracion.gob.es/resources/templating-kit/themes/pag/assets/img/icons/spritesheet.png",
            "wsg": {
              "categoryId": "3",
              "categoryName": "Web Development",
              "id": "3",
              "title": "Modularize bandwidth-heavy components",
              "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
              "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
            }
          }
        ],
        "wsg": {
          "categoryId": "3",
          "categoryName": "Web Development",
          "id": "3",
          "title": "Modularize bandwidth-heavy components",
          "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
          "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
        }
      },
      "findings": [
        {
          "auditId": "largest-contentful-paint",
          "title": "Largest Contentful Paint",
          "description": "Largest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
          "score": 0,
          "displayValue": "12.0 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Largest Contentful Paint\n\n- Lighthouse audit: largest-contentful-paint\n- Current value: 12.0 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nLargest Contentful Paint marks the time at which the largest text or image is painted. [Learn more about the Largest Contentful Paint metric](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "speed-index",
          "title": "Speed Index",
          "description": "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).",
          "score": 0.06,
          "displayValue": "11.1 s",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "1",
            "title": "Set goals based on performance and energy impact",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact",
            "subheading": "Account for the difference in energy intensity that different types of content may have on a project and set goals based on what you would like to achieve."
          },
          "issueTemplate": "## Improve Speed Index\n\n- Lighthouse audit: speed-index\n- Current value: 11.1 s\n- WSG guideline: 1 Set goals based on performance and energy impact\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#set-goals-based-on-performance-and-energy-impact\n\n### Why this matters\nSpeed Index shows how quickly the contents of a page are visibly populated. [Learn more about the Speed Index metric](https://developer.chrome.com/docs/lighthouse/performance/speed-index/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-javascript",
          "title": "Reduce unused JavaScript",
          "description": "Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).",
          "score": 0,
          "displayValue": "Est savings of 534 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "16",
            "title": "Use dependencies appropriately and ensure maintenance",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance",
            "subheading": "Use libraries and frameworks only where necessary, when plain code or smaller packages are inappropriate for the use case, and they are kept up to date."
          },
          "issueTemplate": "## Improve Reduce unused JavaScript\n\n- Lighthouse audit: unused-javascript\n- Current value: Est savings of 534 KiB\n- WSG guideline: 16 Use dependencies appropriately and ensure maintenance\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-dependencies-appropriately-and-ensure-maintenance\n\n### Why this matters\nReduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. [Learn how to reduce unused JavaScript](https://developer.chrome.com/docs/lighthouse/performance/unused-javascript/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "unused-css-rules",
          "title": "Reduce unused CSS",
          "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).",
          "score": 0,
          "displayValue": "Est savings of 1,170 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Reduce unused CSS\n\n- Lighthouse audit: unused-css-rules\n- Current value: Est savings of 1,170 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nReduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "render-blocking-resources",
          "title": "Eliminate render-blocking resources",
          "description": "Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).",
          "score": 0,
          "displayValue": "Est savings of 9,310 ms",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "18",
            "title": "Use the most efficient solution for your service",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service",
            "subheading": "Identify the project requirements, use the most efficient approach, aim for static over dynamic where possible, and consider the impact of extensions and components."
          },
          "issueTemplate": "## Improve Eliminate render-blocking resources\n\n- Lighthouse audit: render-blocking-resources\n- Current value: Est savings of 9,310 ms\n- WSG guideline: 18 Use the most efficient solution for your service\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#use-the-most-efficient-solution-for-your-service\n\n### Why this matters\nResources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-text-compression",
          "title": "Enable text compression",
          "description": "Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).",
          "score": 0,
          "displayValue": "Est savings of 1,283 KiB",
          "impact": "high",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "2",
            "title": "Remove unnecessary or redundant information",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information",
            "subheading": "Remove redundant characters from code to reduce the amount of data being stored and transferred to devices."
          },
          "issueTemplate": "## Improve Enable text compression\n\n- Lighthouse audit: uses-text-compression\n- Current value: Est savings of 1,283 KiB\n- WSG guideline: 2 Remove unnecessary or redundant information\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#remove-unnecessary-or-redundant-information\n\n### Why this matters\nText-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes. [Learn more about text compression](https://developer.chrome.com/docs/lighthouse/performance/uses-text-compression/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "modern-image-formats",
          "title": "Serve images in next-gen formats",
          "description": "Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 124 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Serve images in next-gen formats\n\n- Lighthouse audit: modern-image-formats\n- Current value: Est savings of 124 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nImage formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. [Learn more about modern image formats](https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "uses-optimized-images",
          "title": "Efficiently encode images",
          "description": "Optimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 7 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "2",
            "categoryName": "User Experience Design",
            "id": "11",
            "title": "Optimize media to reduce resource use",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use",
            "subheading": "Ensure all media - including audio, video, animation, images, and other novel formats, when deemed necessary in the design, are optimized, correctly sized and formatted, use lazy loading where appropriate, with a usage policy in place."
          },
          "issueTemplate": "## Improve Efficiently encode images\n\n- Lighthouse audit: uses-optimized-images\n- Current value: Est savings of 7 KiB\n- WSG guideline: 11 Optimize media to reduce resource use\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#optimize-media-to-reduce-resource-use\n\n### Why this matters\nOptimized images load faster and consume less cellular data. [Learn how to efficiently encode images](https://developer.chrome.com/docs/lighthouse/performance/uses-optimized-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        },
        {
          "auditId": "offscreen-images",
          "title": "Defer offscreen images",
          "description": "Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).",
          "score": 0.5,
          "displayValue": "Est savings of 89 KiB",
          "impact": "medium",
          "wsg": {
            "categoryId": "3",
            "categoryName": "Web Development",
            "id": "3",
            "title": "Modularize bandwidth-heavy components",
            "url": "https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components",
            "subheading": "Break down large components into smaller, self-contained pieces that can be requested only when required to save bandwidth."
          },
          "issueTemplate": "## Improve Defer offscreen images\n\n- Lighthouse audit: offscreen-images\n- Current value: Est savings of 89 KiB\n- WSG guideline: 3 Modularize bandwidth-heavy components\n- WSG link: https://www.w3.org/TR/web-sustainability-guidelines/#modularize-bandwidth-heavy-components\n\n### Why this matters\nConsider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).\n\n### Definition of done\n- [ ] Metric improves in Lighthouse on key templates\n- [ ] Changes documented in release notes\n- [ ] Re-scan confirms improvement"
        }
      ]
    }
  ]
}
